Rabbit-用户上线接收消息
application-dev.yml
spring:
rabbitmq:
username: admin
password: admin
host: 192.168.0.45
port: 5672
消费者实现类
MyConsumer.java
package com.meeno.inner.oa.common.rabbit.test;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
import java.io.IOException;
/**
* @description:
* @author: Wzq
* @create: 2020-05-20 15:07
*/
public class MyConsumer extends DefaultConsumer {
public MyConsumer(Channel channel) {
super(channel);
}
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
System.err.println("-----------consume message----------");
System.err.println("consumerTag: " + consumerTag);
System.err.println("envelope: " + envelope);
System.err.println("properties: " + properties);
System.err.println("body: " + new String(body));
}
}
动态发送到队列,接收demo
RabbitProduce.java
package com.meeno.inner.oa.common.rabbit.test;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
/**
* @description:
* @author: Wzq
* @create: 2020-05-20 14:43
*/
public class RabbitProduce {
public static void produce() throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
// "guest"/"guest" by default, limited to localhost connections
String virtualHost = "/";
String queueName = "queue1";
factory.setUsername("admin");
factory.setPassword("admin");
factory.setVirtualHost(virtualHost);
factory.setHost("192.168.0.45");
factory.setPort(5672);
Connection conn = factory.newConnection();
//创建通道
Channel channel = conn.createChannel();
channel.queueDeclare(queueName,true,false,false,null);
//声明交换机
channel.exchangeDeclare("direct","direct");
//队列绑定到交换机并指定rouing_key
channel.queueBind(queueName,"direct","user1");
String msg = "吴志奇好帅Two!";
// 基本发布消息
// 第一个参数为交换机名称、
// 第二个参数为队列映射的路由key、
// 第三个参数为消息的其他属性、
// 第四个参数为发送信息的主体
channel.basicPublish("direct","user2",null,msg.getBytes());
channel.close();
conn.close();
}
public static void consumer() throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
// "guest"/"guest" by default, limited to localhost connections
String virtualHost = "/";
factory.setUsername("admin");
factory.setPassword("admin");
factory.setVirtualHost(virtualHost);
factory.setHost("192.168.0.45");
factory.setPort(5672);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
String exchangeName = "direct";
String routingKey = "user2";
String queueName = "queue1";
//声明队列。
//参数1:队列名
//参数2:持久化 (true表示是,队列将在服务器重启时依旧存在)
//参数3:独占队列(创建者可以使用的私有队列,断开后自动删除)
//参数4:当所有消费者客户端连接断开时是否自动删除队列
//参数5:队列的其他参数
channel.queueDeclare(queueName,true,false,false,null);
//声明交换机
channel.exchangeDeclare("direct","direct");
//队列绑定到交换机并指定rouing_key
channel.queueBind(queueName, exchangeName, routingKey);
channel.basicConsume(queueName, true, new MyConsumer(channel));
/*// 创建一个消费者
Consumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
// 消费收到消息的时候调用的回调
System.out.println("C3接收到:" + new String(body));
}
};*/
}
public static void main(String[] args) throws IOException, TimeoutException {
// produce();
consumer();
}
}
Rabbit-用户上线接收消息的更多相关文章
- SignalR指定用户推送消息
一.首先,在MVC项目中安装SingalR包(SingalR2.0需要.net4.5以上,VS2010可以安装1.1.3版本,本例为VS2010+SignalR1.1.3). 打开工具-NuGet程序 ...
- RabbitMQ 入门 (Go) - 2. 发布和接收消息
本文我将使用 Go 语言在 RabbitMQ 上发布和接收消息. Go 的标准库本身并没有 RabbitMQ 的原生绑定,但是有一个第三方库确能够支持 RabbitMQ,它的源码在 https://g ...
- 【Spring】使用Spring和AMQP发送接收消息(上)
讲AMQP之前,先讲下传统的JMS的消息模型,JMS中主要有三个参与者:消息的生产者.消费者.传递消息的通道(队列或者主题),两种消息模型如下:通道是队列: 通道是队列: 通道是主题: 在JMS中,虽 ...
- 【Spring】使用Spring和AMQP发送接收消息(中)
上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ的连接,本篇就来讲讲RabbitMQ的发送消息.通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bea ...
- SignalR实现消息推送,包括私聊、群聊、在线所有人接收消息(源码)
一.关于SignalR 1.简介:Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面, ...
- 【Spring】使用Spring和AMQP发送接收消息(下)
上篇讲了使用RabbitMQ发送消息,本篇则来讲接收消息.在传统JMS中有两种从队列获取信息的方式,使用JmsTemplate的同步方式以及使用消息驱动pojo的异步方式.Spring AMQP也提供 ...
- Openfire 单人聊天和多人聊天(发送消息、接收消息)
Openfire 单人聊天和多人聊天(发送消息.接收消息) 一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFrie ...
- 微信程序开发系列教程(三)使用微信API给微信用户发文本消息
这个系列的第二篇教程,介绍的实际是被动方式给微信用户发文本消息,即微信用户关注您的公众号时,微信平台将这个关注事件通过一个HTTP post发送到您的微信消息服务器上.您对这个post请求做了应答(格 ...
- 十一、模拟扫码登录微信(用Django简单的布置了下页面)发送接收消息
为了能够模拟登陆QQ,并获取信息.对扫码登录微信进行了分析.简单的用了一下Django将获取的信息映射到页面上.(python3+pycharm) 主要过程就是: 1.获取二维码 2.扫码登录(有三种 ...
随机推荐
- angular小记
declarations:包装组件或指令等 providers:依赖注入 imports:导入其他模块 bootstrap:设置根组件 exports:导出组件或指令等 app.component.t ...
- Python获取list中指定元素的索引
在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等.怎么办?看下面 方法一: 利用数组自身的特性 list.index(target), 其中a ...
- 「AGC034E」 Complete Compress
「AGC034E」 Complete Compress 显然可以枚举根. 然后把某两棵棋子同时往深度浅的方向提,即对不存在祖先关系的两个棋子进行操作. 如果能到达那么就更新答案. 问题转化为如何判定能 ...
- C语言:宏定义 本质及体现
- final修饰符(5)-final方法
final修饰的类的方法不能被重写,例如如果父类不希望子类重写某个方法,则可以使用final修饰符修饰该方法 在java的Object类里面有一个final方法:getClass(),因为Java不希 ...
- linux xsel命令
xsel操作在三个寄存器上,其中一个是系统剪切板(-b).一个是默认寄存器(-p).一个是(-s)
- 我去!爬虫遇到JS逆向AES加密反爬,哭了
今天准备爬取网页时,遇到『JS逆向AES加密』反爬.比如这样的: 在发送请求获取数据时,需要用到参数params和encSecKey,但是这两个参数经过JS逆向AES加密而来. 既然遇到了这个情况,那 ...
- PGSQL基础语句汇总
一.pgsql里面的数据类型不再介绍:https://www.runoob.com/postgresql/postgresql-data-type.html 二.常用基本语句 2.1.CREATE D ...
- Matplotlib和Seaborn演示Python可视化
数据可视化:就是使用图形图表等方式来呈现数据,图形图表能够高效清晰地表达数据包含的信息. Seaborn是基于matplotlib,在matplotlib的基础上进行了更高级的API封装,便于用户可以 ...
- 第八篇 -- 对数据库mysql进行连接并压测
参考链接:https://blog.csdn.net/laofashi2015/article/details/81296929 工具:mysql-8.0.12-winx64,apache-jmete ...