mas estavamos pensando em criar um "proccess router", nesse caso cada processo vai ter um "endereço" unico e o processo router vai direcionar pra onde a mensagem tem que ir, cada processo teria sua queue de mensagens individual dentro do processo, e o router iria enviar a mensagem em uma thread diferente pra cada request de mensagem assim ele fica non-blocking
Interessante! Não suportamos esse aproach no momento, mas se quiser trocar idéia feel free to reach out.
Também está rolando uma discussao no Hacker News, e já teve uma dica legal lá para trocar o method poll()
para fetch()
, pois é semanticamente mais correto. poll()
deve ser usado somente quando vc quer checar primeiro se há algo disponível e caso haja aí sim vc remove, ou seja, poll()
pode retornar null. poll()
segue o contrato do java.util.concurrent.ConcurrentLinkedQueue
, que pode retornar null. Mas o grande problema do poll()
é que ele não suporta batching, e batching é essencial para performance.
Para resumir, houveram as seguintes trocas:
availableToPoll()
virou availableToFetch()
poll()
virou fetch()
peek()
virtou fetch(false)