私はRabbitMQで新しく、キューでそれを消費する前にメッセージを修正したいと思います。私は触れることができないはずの交換をしています。クライアントは、特定のルーティングキーを使用してメッセージを受信します。しかし、そこにはたくさんのものがあり、キューにそれらを公開する前にボディをフィルタリングして変更したいと思っています。Rabbitmq:消費する前に本文を変更する
Exchangeがメッセージを取り込むには、次のようになります。
{
"_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"
}
がかかる前にそれらをフィルタリングし、修正する方法はありますか?たとえば :
...
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
}
}
はそれを行うための方法はありますか?
こんにちは!私はあなたが欲しいものを理解しているか分からない。キューのメッセージをフィルタリングし、条件によっては別のキューにキューを追加することを意味しますか? –
ご迷惑をおかけして申し訳ありません。私が見た限りでは、キューから交換機からすべてのメッセージを消費する方法しかありません。メッセージをキューに公開する前に、メッセージを変更してフィルタリングする方法を見つけられませんでした。それも可能ですか?私はメッセージがキューに入れられることを望んでいません、キューがメッセージフォームの交換を消費するとき、それをフィルタリングして変更したいです。私は本当にあなたが理解して欲しいです。質問が不明な場合は本当に申し訳ありません –
申し訳ありません、それは大丈夫です:-)私は今理解して、あなたの質問に答えようとします。 –