Estou usando org.hornetq.api.core.client como posso garantir a mensagem que estou enviando realmente atingiu a fila (não o cliente, apenas a fila)?
producer.send("validQueue",clientMessage)
observe que a fila é uma fila válida.
esta pergunta semelhante está se referindo a fila inválida. outros como este é relevante para a entrega ao cliente.
Respostas:
3 para resposta № 1Realmente depende de como você está enviando.
A sua primeira pergunta foi sobre Em primeiro lugar,no JMS, você deve enviar para uma fila inválida, pois o produtor validará a existência da fila. Na API do HornetQ, você envia para um endereço (não para uma fila) e pode ter uma fila não acoplada. para consultar se o endereço tem filas ou não.
Agora, para confirmação, a mensagem foi recebida:
- Cenário I, mensagens persistentes, não transacionalmente
Toda mensagem é enviada bloqueada. O cliente irá desbloquear assim que o servidor confirmar o recebimento da mensagem. Isso é feito automaticamente. Você não precisa fazer nada.
- Cenário II, mensagens não persistentes, não transacionalmente
Não há confirmações por padrão. A mensagem é enviada de forma assíncrona. Assumimos que a mensagem é transitória e não é grande coisa se você a perdeu. Você pode mudar isso definindo o bloqueio em envio não persistente no ServerLocator.
- Cenário III, transacional (persistente ou não).
Assim que você chama commit, a mensagem está nas filas.
- Cenário IV, envio de confirmação
Você define um retorno de chamada e recebe uma chamada de método assim que o servidor a registrou nas filas. Procure no manual o retorno de chamada de confirmação. Também há o mesmo recurso no JMS2.