Istnieje sposób na zduszenie zduplikowanych wiadomości w kolejce zdefiniowanej na serwerze ActiveMQ?Unikanie zduplikowanych wiadomości w JMS/ActiveMQ
Próbowałem zdefiniować ręcznie JMSMessageID, (message.setJMSMessageID ("uniqueid")), ale serwer ignoruje tę modyfikację i dostarcza komunikat z wbudowanym wygenerowanym identyfikatorem JMSMessageID.
Według specyfikacji nie znalazłem odniesienia do deduplikacji wiadomości.
W HornetQ, aby poradzić sobie z tym problemem, musimy zadeklarować specyficzną właściwość HQ org.hornetq.core.message.impl.HDR_DUPLICATE_DETECTION_ID w definicji wiadomości.
tj .:
Message jmsMessage = session.createMessage();
String myUniqueID = "This is my unique id"; // Could use a UUID for this
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);
Ktoś wie, czy istnieje podobne rozwiązanie dla ActiveMQ?
Mam wątpliwości, czy ta metoda rozwiąże mój problem. Muszę zachować tylko jedną instancję wiadomości z tym samym identyfikatorem JMSMessageID, podczas gdy ta instancja jest w kolejce. Potrzebuję tego działając jako zestaw. Chcę móc umieścić inną wiadomość o tym samym identyfikatorze JMSMessageID po usunięciu ostatniego elementu idem z kolejki. Muszę to wdrożyć i przetestować. Ale w oparciu o Idempotent opisany w książce EAI, myślę, że koncepcja nie pasuje do mojej konieczności. BUt, proponowane rozwiązanie jest dobre. Będę uczyć się więcej o tym i komentować moje wyniki. Dzięki – apast