1.生产者:消息的创造者
2.交换机:其功能就是接收生产者生产出来的消息,并分发消息给相应的消费者
3.消费者:消息的处理方
4.routingkey:路由键,实现交换机按照一定规则分发消息的重要成员
五种工作模式:准备pom.xml:
4.0.0 com.tedu rabbitmq0.0.1-SNAPSHOT com.rabbitmq amqp-client5.4.3 org.slf4j slf4j-api1.8.0-alpha2 org.slf4j slf4j-log4j121.8.0-alpha2 org.apache.maven.plugins maven-compiler-plugin3.8.0 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的书写和匹配方式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)