0
我想將兩個不同的隊列發佈到兩個不同的隊列一個是errorQueue1,另一個是errorQueue2 .ErrorQueue1有虛擬主機vhost1和errorQueue2有虛擬主機vhost2都是默認交換.My xml和代碼看起來像下面使用amqp寫入兩個不同的隊列
<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哪能寫入虛擬主機2?我應該創建一個更多的連接工廠實例?我想寫入2個不同的隊列在同一個本地主機到2個不同的虛擬主機?