1---接收符合特定路由规则的消息--------------------
发送端:
- channel.exchangeDeclare(EXCHANGE_NAME, "topic");//声明topic类型的Exchange
- String routingKeyOne = "logs.error.one";// 定义一个路由名为“error”
- for (int i = 0; i <= 1; i++) {
- String messageOne = "this is one error logs:" + i;
- channel.basicPublish(EXCHANGE_NAME, routingKeyOne, null, messageOne.getBytes());
- System.out.println(" [x] Sent '" + routingKeyOne + "':'"+ messageOne + "'");
- }
- System.out.println("################################");
- String routingKeyTwo = "logs.error.two";
- for (int i = 0; i <= 2; i++) {
- String messageTwo = "this is two error logs:" + i;
- channel.basicPublish(EXCHANGE_NAME, routingKeyTwo, null, messageTwo.getBytes());
- System.out.println(" [x] Sent '" + routingKeyTwo + "':'" + messageTwo + "'");
- }
- System.out.println("################################");
- String routingKeyThree = "logs.info.one";
- for (int i = 0; i <= 3; i++) {
- String messageThree = "this is one info logs:" + i;
- channel.basicPublish(EXCHANGE_NAME, routingKeyThree, null,messageThree.getBytes());
- System.out.println(" [x] Sent '" + routingKeyThree + "':'"+ messageThree + "'");
- }
- channel.close();
- connection.close();
接收端1:
- channel.exchangeDeclare(EXCHANGE_NAME, "topic");// 声明topic类型的Exchange
- String queueName = "queue_topic_logs1";// 定义队列名为“queue_topic_logs1”的Queue
- channel.queueDeclare(queueName, false, false, false, null);
- // String routingKeyOne = "*.error.two";// "error"路由规则
- // channel.queueBind(queueName, EXCHANGE_NAME, routingKeyOne);// 把Queue、Exchange及路由绑定
- String routingKeyTwo = "logs.*.one";//通配所有logs下第三词(最后一个)词为one的消息
- channel.queueBind(queueName, EXCHANGE_NAME, routingKeyTwo);
- System.out.println(" [*] Waiting for messages.");
- QueueingConsumer consumer = new QueueingConsumer(channel);
- channel.basicConsume(queueName, true, consumer);
- while (true) {
- QueueingConsumer.Delivery delivery = consumer.nextDelivery();
- String message = new String(delivery.getBody());
- String routingKey = delivery.getEnvelope().getRoutingKey();
- System.out.println(" [x] Received '" + routingKey + "':'" + message + "'");
- }
接收端2:
- channel.exchangeDeclare(EXCHANGE_NAME, "topic");//声明topic类型的Exchange
- String queueName = "queue_topic_logs2";//定义队列名为“queue_topic_logs2”的Queue
- channel.queueDeclare(queueName, false, false, false, null);
- String routingKeyOne = "logs.#";//通配所有logs下的消息
- channel.queueBind(queueName, EXCHANGE_NAME, routingKeyOne);//把Queue、Exchange及路由绑定
- System.out.println(" [*] Waiting for messages.");
- QueueingConsumer consumer = new QueueingConsumer(channel);
- channel.basicConsume(queueName, true, consumer);
- while (true) {
- QueueingConsumer.Delivery delivery = consumer.nextDelivery();
- String message = new String(delivery.getBody());
- String routingKey = delivery.getEnvelope().getRoutingKey();
- System.out.println(" [x] Received '" + routingKey + "':'" + message + "'");
- }
2····rabbitmq四---通过路由规则,接收端接收发送端发送的消息
发送端代码:
- channel.exchangeDeclare(EXCHANGE_NAME, "direct");//rounting模式
- String routingKeyOne = "error";//定义一个路由名为“error”
- for (int i = 0; i <= 1; i++) {
- String messageOne = "this is a error logs:" + i;
- channel.basicPublish(EXCHANGE_NAME, routingKeyOne, null, messageOne.getBytes());
- System.out.println(" [x] Sent '" + routingKeyOne + "':'" + messageOne + "'");
- }
- System.out.println("################################");
- String routingKeyTwo = "info"; //定义一个路由名为“info”
- for (int i = 0; i <= 2; i++) {
- String messageTwo = "this is a info logs:" + i;
- channel.basicPublish(EXCHANGE_NAME, routingKeyTwo, null, messageTwo.getBytes());
- System.out.println(" [x] Sent '" + routingKeyTwo + "':'" + messageTwo+ "'");
- }
- System.out.println("################################");
- String routingKeyThree = "all";//定义一个路由名为“all”
- for (int i = 0; i <= 3; i++) {
- String messageThree = "this is a all logs:" + i;
- channel.basicPublish(EXCHANGE_NAME, routingKeyThree, null, messageThree.getBytes());
- System.out.println(" [x] Sent '" + routingKeyThree + "':'" + messageThree + "'");
- }
- channel.close();
- connection.close();
接收端1代码:
- channel.exchangeDeclare(EXCHANGE_NAME, "direct");//声明Exchange
- String queueName = "queue_logs2";//定义队列名为“queue_logs2”的Queue
- channel.queueDeclare(queueName, false, false, false, null);
- String routingKeyOne = "error";//"error"路由规则
- channel.queueBind(queueName, EXCHANGE_NAME, routingKeyOne);//把Queue、Exchange及路由绑定
- String routingKeyTwo = "info";
- channel.queueBind(queueName, EXCHANGE_NAME, routingKeyTwo);
- System.out.println(" [*] Waiting for messages.");
- QueueingConsumer consumer = new QueueingConsumer(channel);
- channel.basicConsume(queueName, true, consumer);
- while (true) {
- QueueingConsumer.Delivery delivery = consumer.nextDelivery();
- String message = new String(delivery.getBody());
- String routingKey = delivery.getEnvelope().getRoutingKey();
- System.out.println(" [x] Received '" + routingKey + "':'" + message + "'");
- }
接收端2代码:
- channel.exchangeDeclare(EXCHANGE_NAME, "direct");//声明Exchange
- String queueName = "queue_logs1";//定义队列名为“queue_logs1”的Queue
- channel.queueDeclare(queueName, false, false, false, null);
- String routingKeyOne = "all";//"error"路由规则
- channel.queueBind(queueName, EXCHANGE_NAME, routingKeyOne);//把Queue、Exchange及路由绑定
- String routingKeyTwo = "info";
- channel.queueBind(queueName, EXCHANGE_NAME, routingKeyTwo);
- System.out.println(" [*] Waiting for messages.");
- QueueingConsumer consumer = new QueueingConsumer(channel);
- channel.basicConsume(queueName, true, consumer);
- while (true) {
- QueueingConsumer.Delivery delivery = consumer.nextDelivery();
- String message = new String(delivery.getBody());
- String routingKey = delivery.getEnvelope().getRoutingKey();
- System.out.println(" [x] Received '" + routingKey + "':'" + message + "'");
- }