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

如何使用Java在RabbitMQ中实现标头交换?

柯乐池
2023-03-14

我是一个新手,试图在java客户端中实现标头交换。我知道这就是“x匹配”绑定参数的用途。当“x匹配”参数设置为“任何”时,只需一个匹配的标头值就足够了。或者,将“x匹配”设置为“所有”要求所有值必须匹配。但是任何人都可以为我提供一个框架代码以更好地理解。

共有1个答案

韩峰
2023-03-14

要使用标头交换,您只需要将交换声明为标头类型:

channel.exchangeDeclare("myExchange", "headers", true);

然后,您需要在消费者使用消息之前声明一个队列,该队列将成为消息的最终目的地:

channel.queueDeclare("myQueue", true, false, false, null);

现在我们需要将交换绑定到声明绑定的队列。在此声明中,您可以设置要将邮件从exchange路由到队列的头。一个例子可能是:

Map<String, Object> bindingArgs = new HashMap<String, Object>();
bindingArgs.put("x-match", "any"); //any or all
bindingArgs.put("headerName#1", "headerValue#1");
bindingArgs.put("headerName#2", "headerValue#2");

...
channel.queueBind("myQueue", "myExchange", "", bindingArgs);
...

这将使用 headerName#1 和 headerName#2 创建绑定。我希望这有帮助!

 类似资料:
  • #!/usr/bin/env python import pika,sys,os def main(): connection = pika。BlockingConnection(pika。connection parameters(host = ' localhost '))channel = connection . channel() if name=='main':try:main()除了

  • 问题内容: 我需要一个可以在重新启动的RabbitMQ服务器交换上发现队列的python客户端,然后启动一个客户端以继续使用每个队列中的消息。如何从某些RabbitMQ兼容的python api /库中发现队列? 问题答案: 据我所知,没有任何办法可以做到这一点。这与Python无关,但是因为AMQP没有定义任何队列发现方法。 无论如何,在AMQP中,都是由客户端(消费者)声明队列的:发布者使用路

  • 我有一些问题,试图了解类型标头的交换是如何工作的。 只有一个交换,myExchange 三个队列: myQueue1 myQueue2 myQueue3 绑定: < li >我的兑换= 我希望消息的标题具有多个值;test1、test2、test3 的任意组合(例如:单独 test1、test1 和 test2、test3 和 test2 等) myQueue3只接收具有MyHeader的消息:[

  • 本文向大家介绍在Java中如何使用lambda实现LongUnaryOperator?,包括了在Java中如何使用lambda实现LongUnaryOperator?的使用技巧和注意事项,需要的朋友参考一下 LongUnaryOperator是一个java.util.function函数接口。此函数接口接受单个长值操作数并生成长值结果。LongUnaryOperator接口可以用作lambda表达

  • 问题内容: 我有一个来自oracle的NO.net Web服务,要访问,我需要添加soap标头。如何在Java中添加soap标头? 这有必要吗? 我的肥皂标头是这样的: 问题答案: 我做到了,只需按照本教程进行即可。很有帮助 是来自javadb的副本(因为已关闭) http://informatictips.blogspot.pt/2013/09/using-message-handler-to-

  • 本文向大家介绍如何在Java 9中使用JShell实现ArrayList?,包括了如何在Java 9中使用JShell实现ArrayList?的使用技巧和注意事项,需要的朋友参考一下 JShell 是一个交互式Java Shell工具,使我们能够从Shell中执行Java代码并立即显示输出。JShell是从命令行运行的REPL(读取评估打印循环)工具。我们可以通过简单地在命令提示符下键入“ jsh