当前位置: 首页 > 知识库问答 >
问题:

如何使用Apache Camel在RabbitMQ消息上设置自定义头?

屠嘉勋
2023-03-14

我试图在我的邮件中添加自定义标题,所以每当异常发生并最终出现在死信队列中时,我都可以看到异常是什么。然而,我所有的尝试都失败了。

  • 使用。setHeader()
  • 在outMessage上设置标题
  • 正在设置exchange的属性

不允许将异常设置为有效负载中的属性。

@Component
public class ProcessRoute extends RouteBuilder {
    ...
    @Override
    public void configure() throws Exception {
        onException(Exception.class)
                .log("Error for ${body}! Requeue")
                .redeliveryDelay(2000)
                .maximumRedeliveries(3)
                .handled(true)
                .setHeader("TEST", constant("TEST"))
                .process(e -> {
                    e.getOut().setHeader("TEST", "TEST");
                    e.setProperty("TEST","TEST");
                });

        from(SOME_ROUTE)
          .doSomeStuff()
          .to(RABBITMQ);
    }
    ...
}

RABBITMQ字符串:

rabbitmq://foo
?exchangeType=topic
&addresses=localhost:1234
&routingKey=#
&autoDelete=false
&queue=bar
&autoAck=false
&deadLetterExchange=DLX
&deadLetterQueue=bar.dlq
&deadLetterExchangeType=direct
&deadLetterRoutingKey=#
&username=foo
&password=bar

共有1个答案

钱选
2023-03-14

如果按照Camel RabbitMQ组件已建立的模式使用头键,则在消息发布到RabbitMQ时,将拾取自定义头。

从上面的代码中提取,而不是:

.setHeader("TEST", constant("TEST"))

这样做:

.setHeader("rabbitmq.TEST", constant("TEST"))

Camel RabbitMQ组件似乎忽略了Camel exchange上可能存在的所有其他非“RabbitMQ.*”头,这可能是有原因的。在发布到RabbitMQ的消息的上下文中,可能会有很多,但大多数都没有意义。

 类似资料:
  • 我是新的RabbitMQ,我有点迷失在留档。 目前,例如,我正在尝试构建一个侦听队列的小型邮件服务,但我有点卡在我应该在哪里放置我的服务具有的参数(目的地、主题...... 我应该将它们放在某种编码格式(json)中,放在我的消息中,还是应该使用头结构,如下例所示: 使用标头是否提供额外的好处?例如,是否可以过滤发送到特定目的地的消息?

  • 我们正在将一个应用程序从JEE7迁移到JEE8。此应用程序依赖于Hibernate ORM和Hibernate Envers。在JEE7上是版本5.2.17,在JEE8上,现在两个自由党的版本都是5.4.3。我们有一个自定义修订实体,它通过实现RevisionListener添加用户信息来扩展DefaultRevisionEntity。在JEE7上,它在OpenLiberty 19.0.0.5上运

  • 本文向大家介绍Python如何使用RabbitMQ的消息,包括了Python如何使用RabbitMQ的消息的使用技巧和注意事项,需要的朋友参考一下 示例 从导入库开始。 使用消息时,我们首先需要定义一个函数来处理传入的消息。这可以是任何可调用的函数,并且必须采用一个消息对象或一个消息元组(取决于中to_tuple定义的参数start_consuming)。 除了处理传入消息中的数据外,我们还必须确

  • 简介 此消息 用来接收 用户自定义TOPIC消息 发送过来的事件。 消息体 ChannelMessageBean 例子 Kotlin @Subscribe(threadMode = ThreadMode.MAIN) fun onReceiveCustomMessage(customEvent: ChannelMessageBean) { // TODO } ChannelMessageB

  • 我正在使用MPAndroidChart显示一个相对简单的条形图。 有2件事我需要设置,我不知道如何自定义: > 我需要为每个条添加文本,而不是简单的值,每个条本身也有样式。 在每个条的顶部,我需要放置各种类型的可绘制材料来覆盖它的宽度(例如一个条中高度为2dp的蓝色,或另一个条上高度相同的黄色渐变)。 下面是我需要做的一个演示: > 我知道我也可以通过使用添加图标,但这似乎不适用于应该使用整个条形

  • 我是一个新的学习者,试图理解拉雷维尔的拉比MQ。我已找到驱动程序vyuldashev/laravel队列rabbitmq 我已经配置应用程序/queue.php,并运行驱动程序与此语法"php工匠队列:工作Rabbitmq"。控制器。我不会在我的控制器中调度作业,因为laravel只是监听消息并处理消息。谁能帮我解释一下这是怎么回事?谢啦