rabbitmq的五种工作模式(不包含RPC工作模式)

rabbitmq的五种工作模式(不包含RPC工作模式),第1张

rabbitmq的五种工作模式(不包含RPC工作模式) 概念:

1.生产者:消息的创造者

2.交换机:其功能就是接收生产者生产出来的消息,并分发消息给相应的消费者

3.消费者:消息的处理方

4.routingkey:路由键,实现交换机按照一定规则分发消息的重要成员

五种工作模式:

准备pom.xml:


	4.0.0
	com.tedu
	rabbitmq
	0.0.1-SNAPSHOT
	
		
			com.rabbitmq
			amqp-client
			5.4.3
		
		
			org.slf4j
			slf4j-api
			1.8.0-alpha2
		
		
			org.slf4j
			slf4j-log4j12
			1.8.0-alpha2
		
	

	
		
			
				org.apache.maven.plugins
				maven-compiler-plugin
				3.8.0
				
					1.8
					1.8
				
			
		
	

获取channel通道:

ConnectionFactory f = new ConnectionFactory();
		f.setHost("192.168.64.140");
		f.setPort(5672);//可选,5672是默认端口
		f.setUsername("admin");
		f.setPassword("admin");

		
		Connection c = f.newConnection();
		//建立信道
		Channel ch = c.createChannel();

 定义一个队列:

ch.queueDeclare("helloworld", false,false,false,null);

 生产者发送消息给消息队列中间件:

ch.basicPublish("", "helloworld", null, "Hello world!".getBytes());

 消费者消费消息(执行处理消息的业务逻辑):

//收到消息后用来处理消息的回调对象
		DeliverCallback callback = new DeliverCallback() {
			@Override
			public void handle(String consumerTag, Delivery message) throws IOException {
				String msg = new String(message.getBody(), "UTF-8");
				System.out.println("收到: "+msg);
			}
		};
		
		//消费者取消时的回调对象
		CancelCallback cancel = new CancelCallback() {
			@Override
			public void handle(String consumerTag) throws IOException {
			}
		};
		
		ch.basicConsume("helloworld", true, callback, cancel);

 消费者发送确认回执:

ch.basicAck(message.getEnvelope().getDeliveryTag(), false);

1.简单模式:

使用默认交换机,路由键就是队列名,路由键在生产者和消费者两端都要给出

2.工作模式:

应用场景:多个消费者并行提供相同类型的服务的场景,例如:服务窗口、医院挂号

使用默认交换机,路由键就是队列名,路由键在生产者和消费者两端都要给出

3.广播模式(发布/订阅模式):

应用场景:生产者发送的消息会以广播的方式发送给所有的消费者

使用fanout交换机,路由键在生产者一端,不需要给出(因为是广播给所有消费者,不作任何过滤处理),消费者给出随机值

4.路由模式

使用直连交换机,路由键在生产者一端给出,消费者一端可以绑定多个routingkey接收多种类型的由交换机发出的消息

5.主题模式

使用主题交换机,路由键在生产者一端给出,消费者一端可以绑定多个routingkey接收多种类型的由交换机发出的消息,机制与路由模式基本类似,区别在于routingkey的书写和匹配方式

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存