创建连接连接到MabbitMQ
1,创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
2,设置MabbitMQ所在主机ip或者主机名
factory.setHost("localhost");
3,创建一个连接
Connection connection = factory.newConnection();
4,创建通道
Channel channel = connection.createChannel();
5,声明队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null)
6,发布消息
String message = "hello world!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
7,关闭通道和连接
channel.close();
connection.close();
1,打开连接和创建频道,与发送端一样
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
2,声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
3,创建队列消费者
QueueingConsumer consumer = new QueueingConsumer(channel);
4,指定消费队列
channel.basicConsume(QUEUE_NAME, true, consumer);
5,接收消息
while (true){
//nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
}
1其中声明队列的方法
参数分别代表 队列名,是否持久化,独占的queue, 不使用时是否自动删除,其他参数
2发布消息
第一个参数转发器默认为" "
第二个参数为关键词,这里是指定队列名
第三个是设置消息的一些属性,可以为null
第四个是设置消息
3消费消息
autoAck 代表自动应答,默认true开启,手动应答为false
4声明转发器
转发器类型有
5临时队列
Java中我们可以使用queueDeclare()方法,不传递任何参数,来创建一个非持久的、唯一的、自动删除的队列且队列名称由服务器随机产生。
6绑定
其中bindingKey对应发布消息中的routingKey