rabbitmq使用


rabbitmq的基本使用


java客户端下载

http://repo1.maven.org/maven2/com/rabbitmq/amqp-client/3.5.7/amqp-client-3.5.7.jar





向队列推送消息


package main;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory;  


public class ProduceMain {
	
	private final static String QUEUE_NAME = "MyQueueName"; 
	public static void main(String[] args){
		//创建连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
		try {
			//创建连接
			Connection connection = factory.newConnection();
			//创建通道
	        Channel channel = connection.createChannel();
	        //指定 通道 使用的队列,队列还不存在时创建队列
	        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
	        
	        String msg ;
	        for (int i=0;i<100;i++) {
	        	msg = "msg"+String.valueOf(i);
	        	//向队列添加消息
	        	channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
	        	System.out.println("Sent [" + msg + "]");
	        	
				Thread.sleep(100);
				
			}
	        
	        channel.close();
	        connection.close();
		} catch (IOException e) {
			
			e.printStackTrace();
		} catch (TimeoutException e) {
			
			e.printStackTrace();
		}catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        
	}

}

从队列中取出消息


package main;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;  
import com.rabbitmq.client.Connection;  
import com.rabbitmq.client.ConnectionFactory;  
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;  
import com.rabbitmq.client.ShutdownSignalException;
public class ConsumeMain {

	private final static String QUEUE_NAME = "MyQueueName"; 
	public static void main(String[] args) {
		//创建连接工厂 
        ConnectionFactory factory = new ConnectionFactory();  
        factory.setHost("localhost");
		try {
			Connection connection = factory.newConnection();
			Channel channel = connection.createChannel();  
			//指定 通道 使用的队列,队列还不存在时创建队列
	        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
	        System.out.println("Access "+QUEUE_NAME+", waiting...");
	          
	        //创建队列消费者  
	        QueueingConsumer consumer = new QueueingConsumer(channel);
	        //指定消费队列  
	        channel.basicConsume(QUEUE_NAME, true, consumer);  
	        while (true)  
	        {
	            //从队列取数据,如果没有阻塞等待
	            QueueingConsumer.Delivery delivery = consumer.nextDelivery();
				String message = new String(delivery.getBody());
		        System.out.println("Get [" + message + "]");
	        }
		} catch (IOException e) {
			
			e.printStackTrace();
		} catch (TimeoutException e) {
			
			e.printStackTrace();
		}  catch (ShutdownSignalException e) {
			
			e.printStackTrace();
		} catch (ConsumerCancelledException e) {
			
			e.printStackTrace();
		} catch (InterruptedException e) {
			
			e.printStackTrace();
		}  
        
	}

}





RabbitMQ是一个使用Erlang实现的高并发高可靠AMQP消息队列服务器。它支持消息的持久化、事务、拥塞控制、负载均衡等特性,使得RabbitMQ在各种应用场景下被广泛使用RabbitMQ与Erlang和AMQP密切相关。 Erlang是一种编程语言,它特别适合构建高并发、分布式、实时的系统。RabbitMQ使用Erlang作为其底层开发语言,这使得它能够充分利用Erlang在并发处理和容错性方面的优势。 AMQP(Advanced Message Queuing Protocol)是一个开放标准的消息队列协议,用于在应用程序之间进行可靠的消息传递。RabbitMQ实现了AMQP协议,这意味着它可以与其他遵循AMQP协议的应用程序进行通信,实现可靠的消息传递机制。 要使用RabbitMQ,可以通过Docker安装,使用以下命令运行一个带有管理界面的RabbitMQ容器: ``` docker run -itd --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management ``` 在编写RabbitMQ程序时,可以利用其支持的多种消息模型,例如发布-订阅模型、工作队列模型、路由模型等,根据具体需求选择合适的模型来实现消息传递。 在配置RabbitMQ环境时,可以设置RABBITMQ_SERVER环境变量,并将RabbitMQ的安装路径添加到系统的path变量中,以方便在命令行中直接使用RabbitMQ命令。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [RabbitMQ使用详解](https://blog.csdn.net/qq_43410878/article/details/123656765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值