0
私はキーワードのリストを持っており、出版社からそれぞれにメッセージを送信したいと思います。Java RabbitMQ - トピック交換でキーワードを切り替えるにはどうすればいいですか?
私はそれらをすべてループしてみると、購読者は購読しているかどうかにかかわらず、すべてのメッセージを受信します。
public class BrokerProducer {
public static String[] topics = {"Beauty","Meat","Soft Drinks","Fruits and Vegetables","Alcoholic Drinks"};
/**
* @param args the command line arguments
*/
public static void main(String[] args){
try {
CreateProducer();
/*
Broker RabbitMQ en 155.54.204.46
(diana.inf.um.es)
– Port 5672
– Username master
– Password master*/
// TODO code application logic here
} catch (IOException ex) {
Logger.getLogger(BrokerProducer.class.getName()).log(Level.SEVERE, null, ex);
} catch (TimeoutException ex) {
Logger.getLogger(BrokerProducer.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.print("success");
}
private static void CreateProducer() throws IOException, TimeoutException{
ConnectionFactory factory = new ConnectionFactory();
factory.setUsername("master");
factory.setPassword("master");
factory.setHost("diana.inf.um.es");
factory.setPort(5672);
Connection conn = factory.newConnection();
Channel channel = conn.createChannel();
channel.exchangeDeclare("SupermarketExchange1", "topic");
//channel.basicPublish("SupermarketExchange1", "testrouting.*", null, "testmessage".getBytes());
//channel.basicPublish("SupermarketExchange1", "testrouting.Fruits and Vegetables", null, "testmessage".getBytes());
for(String top: topics){
//channel.exchangeDeclare("SupermarketExchange1", "topic");
publish(channel, "SupermarketExchange1", top);
System.out.println(top);
//channel.exchangeDelete("SupermarketExchange1");
}
}
private static void publish(Channel channel, String Exchange, String Topic) throws IOException{
String Message = "You are subscribed to"+ Topic;
channel.basicPublish(Exchange,"testrouting."+ Topic, null, Message.getBytes());
}
}
すべてのルートキーに登録し、あなたの消費者のように思えます。 [this](https://www.rabbitmq.com/tutorials/tutorial-four-java.html)と[this](https://www.rabbitmq.com/tutorials/tutorial-five-java.html)を読んでください。記事。 RabbitMQでルーティングがどのように機能するかについて説明しています。 –
私は加入者コードを掲載することはできません。ルーティングキーは "testrouting.Meat"と思われますが、まだすべてを受信します。 – Jon