rabbitmq消息消费者
pom
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>springcloudparent</artifactId>
- <groupId>com.cxy</groupId>
- <version>0.0.-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.</modelVersion>
- <artifactId>rabbitMqConsumer</artifactId>
- <dependencies>
- <dependency>
- <groupId>com.rabbitmq</groupId>
- <artifactId>amqp-client</artifactId>
- <version>5.4.</version>
- </dependency>
- </dependencies>
- </project>
消费者代码:
- package com.cxy.consumer;
- import com.rabbitmq.client.*;
- import java.io.IOException;
- import java.util.concurrent.TimeoutException;
- /***
- * @ClassName: Consumer1
- * @Description:
- * @Auther: cxy
- * @Date: 2019/3/24:11:37
- * @version : V1.0
- */
- public class Consumer1 {
- private static final String Queue="helloworld";
- public static void main(String[] args) {
- ConnectionFactory connectionFactory= new ConnectionFactory();
- //设置连接地址
- connectionFactory.setHost("192.168.230.134");
- //设置端口
- connectionFactory.setPort();
- //设置密码用户名
- connectionFactory.setUsername("guest");
- connectionFactory.setPassword("guest");
- //设置虚拟机,每个虚拟机相当于一个小的mq
- connectionFactory.setVirtualHost("/");
- Connection connection =null;
- try {
- //建立连接
- connection = connectionFactory.newConnection();
- //建立通道,生产着和消费者都是在通道中完成
- Channel channel = connection.createChannel();
- /*
- queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,
- Map<String, Object> arguments)
- 参数1,声明队列
- 参数2 是否持久化
- 参数3 是否排他,是否独战连接,队列只允许该链接中访问,如果连接关闭,队列也就删除了
- 参数4:是否自动删除,如果将此参数设置true,那么就变成零时队列
- 参数5 :扩展参数,例如存活时间
- */
- channel.queueDeclare(Queue,true,false,false,null);
- /*
- String basicConsume(String queue, boolean autoAck, Consumer callback)
- 参数一:队列名称
- 参数二:自动回复
- 参数三 消费者方法
- */
- DefaultConsumer defaultConsumer=new DefaultConsumer(channel) {
- //当接受到消息时候,此方法被调用
- /**
- * @Author cxy
- * @Description //TODO
- * @Date 2019/3/24
- * @Param [consumerTag, envelope, properties, body]
- * @return void
- *
- * consumerTag 用来标识.可以再监听队列时候设置
- * envelope 信封,通过envelope可以通过这个获取到很多东西
- * properties 额外的消息属性
- * body:消息体
- **/
- @Override
- public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
- //获取交换机
- String exchange = envelope.getExchange();
- //消息id,用来表示那个消息消费了
- long deliveryTag = envelope.getDeliveryTag();
- String message=new String(body,"utf-8");
- System.out.println("receive");
- }
- };
- channel.basicConsume(Queue,true ,defaultConsumer);
- } catch (IOException e) {
- e.printStackTrace();
- } catch (TimeoutException e) {
- e.printStackTrace();
- }
- }
- }
由于注释内容都写得很详细就没有单独写文字了.运行之后可以发掘管控台中消息没有了,
在正式开发中不会使用这种原生得代码去使用,会采用springboot去整合相关内容,至于以上代码为什么还要去监听队列,防止如果队列不存在,程序会存在异常,所以这样,在正式开发中
会采用手动会签得方式,如果,没有会签,就会进行消息重试.保证消息不会丢失
rabbitmq消息消费者的更多相关文章
- RabbitMQ消息队列之二:消费者和生产者
在使用RabbitMQ之前,需要了解RabbitMQ的工作原理. RabbitMQ的工作原理 RabbitMQ是消息代理.从本质上说,它接受来自生产者的信息,并将它们传递给消费者.在两者之间,它可以根 ...
- rabbitmq消息队列,消息发送失败,消息持久化,消费者处理失败相关
转:https://blog.csdn.net/u014373554/article/details/92686063 项目是使用springboot项目开发的,前是代码实现,后面有分析发送消息失败. ...
- Net分布式系统之四:RabbitMQ消息队列应用
消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是通过消息队列传输系统日志.目前 ...
- (转)RabbitMQ消息队列(九):Publisher的消息确认机制
在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...
- RabbitMQ消息队列应用
RabbitMQ消息队列应用 消息通信组件Net分布式系统的核心中间件之一,应用与系统高并发,各个组件之间解耦的依赖的场景.本框架采用消息队列中间件主要应用于两方面:一是解决部分高并发的业务处理:二是 ...
- RabbitMQ消息队列(九):Publisher的消息确认机制
在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...
- 使用EasyNetQ组件操作RabbitMQ消息队列服务
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...
- 译MassTransit 创建消息消费者
创建消息消费者一个消息消费者是一个 可以消费一个或多个消息类型的类,指定IConsumer<T>接口,T为消息类型 public class UpdateCustomerConsumer ...
- RabbitMQ 消息队列 入门 第一章
RabbitMQ : 官网:https://www.rabbitmq.com/ GitHub:https://github.com/rabbitmq?q=rabbitmq 第一步安装: 点击 htt ...
随机推荐
- 19-从零玩转JavaWeb-继承关系与方法覆盖
配套视频详解 继承子类与父类的关系 继承子类与父类的关系代码演示 继承方法的覆盖 方法覆盖原则 一.继承编写过程 二.子类可以继承父类当中哪些内容 可以自行把修饰符换下, 然后查看子类能不能访问 ...
- Weblogic的安装、配置与应用部署
1. Weblogic安装 1.1 Linux下安装过程 安装环境: 操作系统: redhat-release-5Server-5.4.0.3 Weblogic版本: Weblogic 9.24 1) ...
- Python父类调用子类
首先说明,上面的标题其实是不正确的,Python是一门解释型.动态数据类型的高级语言,运行时,动态判断调用对象,其实还是子类自己在调用自己的方法或属性. 举个例子(copy过来的):SocketSer ...
- 面试题:filter过滤器 listener 监听器 案例有点用
1.Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行 ...
- BOOL运算符号(从C#入门经典第五版中摘录)
只总结自己觉得难的哈: (1) var1=!var2; //(非) (2) var1=var2&var3; //(与) (3)var1=var2|var3; //(或) (4 ...
- Win10 linux子系统Ubuntu下显示图形界面
转载 https://jingyan.baidu.com/article/ed2a5d1f98577809f6be17a3.html 打开终端界面,在这个窗口测试一下ls命令,无误. # 更新 sud ...
- IntelliJ IDEA——利用maven插件构建web工程
- elasticsearch plugin
bin/plugin -install de.spinscale/elasticsearch-plugin-suggest/0.90.5-0.9 plugin -install mobz/elasti ...
- 《the art of software testing》第四章 测试用例的设计
白盒测试 逻辑覆盖测试: 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术.它属白盒测试.白盒测试的测试方法有代码检查法.静态结构分析法.静态质量度量法.逻辑覆盖法.基本路径测试法.域测试.符 ...
- MongoDB整理笔记のSharding分片
这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding 的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群.MongoDB 的数据分块称为 chu ...