【问题标题】:writing to two different queue using amqp使用 amqp 写入两个不同的队列
【发布时间】:2016-02-28 23:16:15
【问题描述】:

我正在尝试将 2 条不同的消息发布到两个不同的队列,一个是 errorQueue1,另一个是 errorQueue2。ErrorQueue1 有虚拟主机 vhost1,errorQueue2 有 virtualHost vhost2 都在默认交换上。我的 xml 和代码如下所示

<rabbit:connection-factory id="connectionFactory" host="${rabbit.host}" port="${rabbit.port}"   virtual-host="${rabbitVhost1}"
                               username="${rabbit.username}" password="${rabbit.password}"/>

    <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory"/>
    <rabbit:admin id="rabbitAdmin" connection-factory="connectionFactory"/>



    <rabbit:queue id="queueOne" name="${queue.one.queue}"/>
    <rabbit:queue id="queueTwo" name="${queue.two.queue}"/>

    <rabbit:listener-container connection-factory="connectionFactory">
        <rabbit:listener id="typeOneListener" ref="typeOneListener" method="handleMessage" queues="queueOne"/>
        <rabbit:listener id="typeTwoListener" ref="typeTwoListener" method="handleMessage" queues="queueTwo"/>
    </rabbit:listener-container>


    <rabbit:topic-exchange id="my.topic" name="${my.topic}">
                <rabbit:bindings>
                    <rabbit:binding pattern="${queue.one.queue}" queue="queueOne"/>
                    <rabbit:binding pattern="${queue.two.queue}" queue="queueTwo"/>
                </rabbit:bindings>
    </rabbit:topic-exchange>



@Autowired
    RabbitTemplate rabbitTemplate;
public void sendMessage() {
        Message message;
        for (int i = 0; i < 10; i++) {
            message = createMessage1(">>> For one");
            rabbitTemplate.send("queue.one", message);
            message = createMessage2(">>> For two");
            rabbitTemplate.send("queue.two", message);
            System.out.println("Message sent: " + message);
            index.getAndIncrement();
        }
    }

但是想确认我在做什么是对的?我应该写到交换还是可以直接写到不同的队列?还有一个问题是连接工厂绑定到 vhost1 我如何写到 vhost 2?我应该创建又一个连接工厂实例?我想在同一个 localhost 上向 2 个不同的 vhost 写入 2 个不同的队列?

【问题讨论】:

    标签: rabbitmq spring-amqp


    【解决方案1】:

    连接工厂绑定到 vhost1 我如何写入 vhost 2

    您需要 2 个连接工厂和 2 个独立的RabbitTemplates。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-12
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2022-01-08
      • 2012-05-24
      相关资源
      最近更新 更多