rabbitmq topic 通配符
package com.biu.jx.testRab;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Producer_Topics {
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setVirtualHost("/");
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
String exchangeName = "test_topic";
channel.exchangeDeclare(exchangeName, BuiltinExchangeType.TOPIC,true,false,false,null);
String queue1Name = "test_topic_queue1";
String queue2Name = "test_topic_queue2";
channel.queueDeclare(queue1Name,true,false,false,null);
channel.queueDeclare(queue2Name,true,false,false,null);
channel.queueBind(queue1Name,exchangeName,"#.error");
channel.queueBind(queue1Name,exchangeName,"order.#");
channel.queueBind(queue2Name,exchangeName,"*.*");
String body1 = "日志信息:order.info.ac 日志级别:info";
String body2 = "日志信息:order.info.ac.aa 日志级别:info";
String body3 = "日志信息:order.info.bc 日志级别:info";
String body4 = "日志信息:order.info 日志级别:info";
String body5 = "日志信息:user.info 日志级别:info";
String body6 = "日志信息:ac.ab 日志级别:info";
String body7 = "日志信息:ac.ab.cc 日志级别:info";
channel.basicPublish(exchangeName,"order.info.ac",null,body1.getBytes());
channel.basicPublish(exchangeName,"order.info.ac.aa",null,body2.getBytes());
channel.basicPublish(exchangeName,"order.info.bc",null,body3.getBytes());
channel.basicPublish(exchangeName,"order.info",null,body4.getBytes());
channel.basicPublish(exchangeName,"user.info",null,body5.getBytes());
channel.basicPublish(exchangeName,"ac.ab",null,body6.getBytes());
channel.basicPublish(exchangeName,"ac.ab.cc",null,body7.getBytes());
channel.close();
connection.close();
}
}
package com.biu.jx.testRab;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Consumer_Topic1 {
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setVirtualHost("/");
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
String queue1Name = "test_topic_queue1";
String queue2Name = "test_topic_queue2";
Consumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
System.out.println("保存数据库:" + new String(body));
}
};
channel.basicConsume(queue1Name,true,consumer);
}
}
打印
保存数据库:日志信息:order.info.ac 日志级别:info
保存数据库:日志信息:order.info.ac.aa 日志级别:info
保存数据库:日志信息:order.info.bc 日志级别:info
保存数据库:日志信息:order.info 日志级别:info
package com.biu.jx.testRab;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Consumer_Topic2 {
public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setVirtualHost("/");
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
String queue1Name = "test_topic_queue1";
String queue2Name = "test_topic_queue2";
Consumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
System.out.println("控制台:" + new String(body));
}
};
channel.basicConsume(queue2Name,true,consumer);
}
}
打印
控制台:日志信息:order.info 日志级别:info
控制台:日志信息:user.info 日志级别:info
控制台:日志信息:ac.ab 日志级别:info