Necesito la cola para hacer cumplir la política de no duplicar. ¿Es posible? ¿Si es así, cómo? (He estado buscando en Google durante horas ...)Apache ActiveMQ 5.3 - ¿Cómo configurar una cola para rechazar mensajes duplicados?
Editar:
La aplicación ActiveMQSession tiene estas líneas:
// transform to our own message format here
ActiveMQMessage msg = ActiveMQMessageTransformation.transformMessage(message, connection);
// Set the message id.
if (msg == message) {
msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
} else {
msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
message.setJMSMessageID(msg.getMessageId().toString());
}
El ActiveMQMessageTransformation es enchufable (se puede configurar), pero el seguir si la declaración es bastante incontrovertible.
¿Alguna idea, excepto cambiar su código?
(Lo siento por los nombres de clase no específicos, ha pasado un tiempo) Quería definir el id del mensaje de parámetro que se ha probado para la duplicación. Sin embargo, a pesar del hecho de que puede hacer message.setId, se sobrescribe (!) En el AMQProxy y se establece con un nuevo messageId fabricado. – Yossale
el ID de mensaje es establecido por el proveedor de JMS, y para ActiveMQ proporcionamos una ID global única. La forma correcta de hacerlo con JMS es establecer una propiedad de encabezado de mensaje. Para ActiveMQ, puede usar el uso del messageID ID generado, ya que siempre será único. –
Estoy usando ActiveMQ 5.4.1. Si configuro un JMSMessageID personalizado, no funciona como se esperaba. JMSMessageId está creado por internos de ActiveMQ. Informé un ejemplo y un ejemplo de HornetQ en http://stackoverflow.com/questions/4934386/avoiding-duplicated-messages-on-jms-activemq – apast