Ich bin neu in RabbitMQ und ich möchte eine Nachricht vor dem Konsumieren von einer Warteschlange ändern. Ich habe einen Austausch, der unantastbar bleiben sollte. Der Client empfängt Nachrichten mit einem bestimmten Routing-Schlüssel. Aber da sind viele von ihnen und ich möchte den Körper filtern und ändern, bevor ich sie in die Warteschlange verlese.Rabbitmq: Ändern Sie Nachrichtentext vor dem Verzehr
Exchange-Nachrichten bevölkern wie folgt aussieht:
{
"_context_domain": "unsuitable",
"_msg_id": "1",
"_context_quota_class": null,
"_context_read_only": false,
"_context_request_id": "1"
}
{
"_context_domain": "suitable",
"_msg_id": "2",
"_context_quota_class": null,
"_context_read_only": false,
"_context_request_id": "2"
}
Gibt es eine Möglichkeit, sie zu filtern und zu modifizieren, bevor raubend? Zum Beispiel:
...
channel.queueBind(QUEUE_NAME, "EXCHANGE_NAME", "ROUTNG_KEY");
final Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String message = new String(body, "UTF-8");
Gson mapper = new Gson();
SomeObject object = (SomeObject) mapper.fromJson(message, SomeObject.class);
if (SomeObject.getContext_domain = "suitable"){
//publish somehow SomeObject.getMsg_id into QUEUE_NAME
}
}
Gibt es eine Möglichkeit, es zu tun?
Hallo! Ich bin mir nicht sicher, ob ich verstehe, was du willst. Meinst du, dass Nachrichten in einer Warteschlange gefiltert werden sollen und je nach Kriterium in einer anderen Warteschlange erneut angefragt werden? –
Entschuldigung für nicht klare Frage. Soweit ich gesehen habe, gibt es nur eine Möglichkeit, ALLE Nachrichten vom Austausch nach Warteschlange zu konsumieren. Ich habe nicht gefunden, wie ich eine Nachricht ändern und filtern kann, bevor ich sie in der Warteschlange veröffentliche. Ist das überhaupt möglich? Ich möchte nicht, dass die Nachricht erneut in die Warteschlange gestellt wird. Ich möchte, dass sie gefiltert und geändert wird, wenn die Nachricht Nachrichten austauschen. Ich hoffe wirklich, dass du es verstehst. Es tut mir wirklich leid, wenn die Frage unklar ist –
Tut mir leid, das ist ok :-) Ich verstehe jetzt und werde versuchen, Ihre Frage zu beantworten. –