消息队列RabbitMQ学习笔记之简单的消息收发

按照个人理解,整个消息队列的使用过程,大致分为三个模块:

消息生产者:发送消息至消息中间件

// 队列名称
final String QUEUE_NAME = "rabbitMQ_test";
/**
 * connection是socket连接的抽象,并且为我们管理协议版本协商(protocol version negotiation),认证(authentication )等等事情。
 */
ConnectionFactory factory = new ConnectionFactory();
// 主机IP
factory.setHost("127.0.0.1");
// 端口号,默认5672
factory.setPort(5672);
// 用户名
factory.setUsername("user");
// 密码
factory.setPassword("password");
// 设置虚拟主机(相当于数据库中的库)
factory.setVirtualHost("虚拟主机111");

Connection connection = factory.newConnection();
Channel channe = connection.createChannel();
/**
 * 创建一个channel,绝大部分API方法需要通过调用它来完成,
 * 发送之前,我们必须声明消息要发往哪个队列,然后我们可以向队列发一条消息
 */
channe.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "虫洞空间研发团队测试消息发送带事务...";

try {
	// 开启事务
	channe.txSelect();
	// 往队列中发出一条消息,使用rabbitmq默认交换机
	channe.basicPublish("", QUEUE_NAME, null, message.getBytes());
	//int a=1/0;
	System.out.println("发送消息【" + message + "】");
	// 提交事务
	channe.txCommit();
} catch (Exception e) {
	e.printStackTrace();
	System.err.println("发送消息出现异常");
	// 事务回滚
	if(channe != null){
		channe.txRollback();
	}
} finally {
	channe.close();
	connection.close();
}


整个消息生产过程大致分为四步 

1.获取链接
    根据主机IP,端口,虚拟主机,以及用户名和密码获取对应的链接

2.根据链接创建通道

3.声明队列

4.消息生产

 

消息中间件:消息存储和转发的中转站

 

消息消费者:从消息中间件获取消息进行消费

// 队列名称
final String QUEUE_NAME = "rabbitMQ_test";
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("127.0.0.1");
factory.setPort(5672);
factory.setUsername("user");
factory.setPassword("password");
factory.setVirtualHost("虚拟主机111");

Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
// channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("启动中间件");
Consumer consumer = new DefaultConsumer(channel) {
	@Override
	public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
							   byte[] body) throws IOException {
		String message = new String(body, "UTF-8");
		System.out.println("中间件接收消息【" + message + "】");
	}
};
channel.basicConsume(QUEUE_NAME, true, consumer);

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值