Ich verwende ActiveMQ
, um die Nachricht zu senden.Warum kommt die Nachricht wieder zur onMessage() Funktion?
Also, wenn ich eine Nachricht gesendet habe, kommt Nachricht, um Nachricht zu erhalten. Bei erfolgreichem Einfügen wird es bestätigt.
Aber ich habe einen Code nach der Bestätigung, die NullPointerException
werfen kann.
Um diese Ausnahme absichtlich zu erzeugen, habe ich NullPointerException
werfen. So wenn ich das tue
Nachricht ist nicht dequeued
und die gleiche Meldung kommt wieder auf die onMessage
Funktion.
mein Code:
public void onMessage(Message message) {
String msg = null;
try
{
msg = receiveMessage(message);
// other code to insert message in db
message.acknowledge();
if(true)
{
throw new NullPointerException("npe"));
}
** // other code which might produces null pointer exception **
}
catch(Exception ex){}
}
Nun meine Frage ist, warum die Nachricht wieder zu onMessage()
Funktion kommen, wie ich acknowledge()
es auch haben.
Da habe ich bereits die Nachricht in db eingefügt.
Wird die Nachricht innerhalb der Warteschlange nicht unter acknowledge()
entfernt?
Wie kann ich das erreichen? Vielen Dank im Voraus.
Was ist der Bestätigungsmodus Ihrer Sitzung? –
@Tim Bestätigungsmodus ist als Client_Acknowledge festgelegt. –
vikiiii
Welche Version von activemq verwenden Sie? –