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

读取AMQP消息头spring cloud stream

孟智志
2023-03-14

开发了spring批处理应用程序,该应用程序生成由json对象列表组成的amqp(rabbitmq)消息。消息具有包含一些元数据的标头。Spring cloud stream应用程序正在消费消息,我使用了功能性方法。如何访问标题<将消息头用于除路由之外的任何内容,这是一种糟糕的方法吗?

共有1个答案

仇睿
2023-03-14

如果Spring Cloud Stream应用程序中的函数签名接受消息(例如):

@Bean
public Consumer<Message<?>> consume() {
    return message -> {
        message.getHeaders()....
    };
}

...然后您可以简单地访问消息头。我们也在努力简化它。

不,将消息头用于除路由之外的任何事情都不是一种坏方法。将消息头视为元信息,仅与当前消息相关。对当前消息重要但不在之后的任何内容。

 类似资料:
  • 我想使用rabbitMq队列中Storm喷口中的消息。 现在,我们使用Spring AMQP异步发送和接收来自RabbitMq的消息。 Spring AMQP提供了从队列读取消息的机制(创建监听器或使用注释@RabbitListner)。 问题是我可以让一个侦听器从队列中读取消息。但是,我如何将此消息发送到Storm群上运行的Storm喷口? 拓扑将启动一个集群,但在我的spout的nextTup

  • 我想知道是否有任何方法可以将消息返回到队列中的原始位置。例如,假设我们有这样的顺序: ,为头,为尾。通常情况下,当我们使用或,时,它只是将消息排在当前尾部之后。在这种情况下,当重新执行时,新的排序变为。然而,我想知道是否有任何方法可以排队到队列的开头。因此,如果被“发回”,它将被放置在队列的开头,在其原始位置。 我使用Spring AMQP搜索解决方案。

  • ActiveMQ/JMS有一个内置机制,用于确保在使用竞争消费者模式时,共享公共报头(即JMSXGroupID报头)的消息始终由队列的同一消费者使用。队列的使用者完全不知道实际的头值,因为具有公共头的消息的保证是在服务器端而不是在使用者端执行的。有关此工作方式的更多详细信息,请参见http://activemq.apache.org/message-groups.html。 用AMQP或者用Rab

  • 读取匹配指定过滤条件、并且在上次调用本方法之后接收到的消息。 调用: web3.shh.getFilterMessages(id) 参数: id:String,消息过滤器ID,由shh.newMessageFilter()返回 返回值: Array: 一组消息对象。 示例代码: web3.shh.getFilterMessages('2b47fbafb3cce24570812a82e6e93cd

  • 我有一个入站RabbitMQ通道适配器,每天成功处理3000条消息,但是偶尔我会在RabbitMQ管理控制台看到1条未包装的消息。这似乎仍然是这样。 我确实有一个重试建议链,可以重试3次,然后通过死信路由密钥移动到DLQ,这对大多数例外情况都很有效。 在过去的几周里,unacked已经发生了两次,有一次我能够进行线程转储,并看到int-http:outbound-gateway调用在等待http响

  • 我们在RHEL 7.0 VM上部署了一个Java/spring/Tomcat应用程序,它使用AlejandRorivera/Embedded-RabbitMQ,一旦部署了war,它就启动Rabbitmq服务器,并连接到它。我们有多个队列用来处理和过滤事件。 流程如下所示: 我们接收到的事件->发布事件队列->侦听器类筛选事件->发布到另一个队列进行处理->我们发布到另一个队列进行日志记录。 问题是