2015-11-26 19 views
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個不同的虛擬主機?

回答

0

連接工廠勢必VHOST1我爲什麼能寫入虛擬主機2

您需要2個連接工廠和2角獨立RabbitTemplate秒。