【发布时间】:2016-07-08 01:47:12
【问题描述】:
我是 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
}
}
有什么办法吗?
【问题讨论】:
-
嗨!我不确定我明白你想要什么。您的意思是要过滤队列中的消息,并根据条件将消息重新排队到另一个队列中?
-
对不起,不清楚的问题。据我所知,只有一种方法可以按队列消耗来自交换的所有消息。在将消息发布到队列之前,我没有找到如何更改和过滤消息。这甚至可能吗?我不希望消息被重新排队,我希望在队列使用消息表单交换时对其进行过滤和更改。我真的希望你能理解。如果问题不清楚,我真的很抱歉
-
别抱歉,没关系 :-) 我现在明白了,会尽力回答您的问题。
标签: java rabbitmq message-queue amqp