C#中使用RabbitMQ收发队列消息
一、程序使用NetCore、引入Nuget:
Install-Package RabbitMQ.Client -Version 4.1.3
二、消息发部端:
using RabbitMQ.Client;
using System;
using System.Text; namespace ClientDemo
{
public class Client
{
static string exchangeName = "my-exchange";
static string queueName = "my-queue";
public static void Main()
{
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
ConnectionFactory factory = new ConnectionFactory();
factory.Uri = new Uri("amqp://guest:guest@localhost:5672/");
var conn = factory.CreateConnection();
IModel model = conn.CreateModel(); //model.ExchangeDelete(exchangeName);
model.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Direct, durable: false, autoDelete: false, arguments: null);
model.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: null);
model.QueueBind(queue: queueName, exchange: exchangeName, routingKey: queueName); var props = model.CreateBasicProperties();
props.Persistent = true;//是否持久化
while (true)
{
Console.WriteLine("请输入要发送的消息:");
var line = Console.ReadLine();
if (line == "exit") break;
model.BasicPublish(exchange: exchangeName, routingKey: queueName, basicProperties: props, body: Encoding.UTF8.GetBytes(line)); }
model.Close();
conn.Close();
}
}
}
二、消息消费端:
using RabbitMQ.Client;
using System;
using System.Text;
using System.Threading;
using System.Threading.Tasks; namespace ServerDemo
{
public class Server
{
//static string exchangeName = "my-exchange";
static string queueName = "my-queue";
public static void Main()
{
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
ConnectionFactory factory = new ConnectionFactory();
//factory.Uri = new Uri("amqp://guest:guest@localhost:5672/");
var conn = factory.CreateConnection();
IModel model = conn.CreateModel(); //model.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Direct, durable: false, autoDelete: false, arguments: null);
//model.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: null);
//model.QueueBind(queue: queueName, exchange: exchangeName, routingKey: queueName);
var task = Task.Run(() =>
{
while (true)
{
var result = model.BasicGet(queue: queueName, autoAck: false);
if (result == null) { Thread.Sleep();continue; };
var msg = Encoding.UTF8.GetString(result.Body);
Console.WriteLine(msg);
}
}); task.Wait();
model.Close();
conn.Close();
}
}
}
C#中使用RabbitMQ收发队列消息的更多相关文章
- rabbitmq死信队列消息监听
#邮件通知并发送队列消息#!/bin/bash maillog="/var/log/mq.maillog" message_file="/tmp/mq_message&q ...
- python rabbitMQ持久化队列消息
import pika connection = pika.BlockingConnection( pika.ConnectionParameters('localhost'))#建立一个最基本的so ...
- rabbitmq设置队列消息存活时间
public static final int ALIVETIME = 600000; public static final String QUEUE = "hnyz_gs_queue&q ...
- 没用过消息队列?一文带你体验RabbitMQ收发消息
人生终将是场单人旅途,孤独之前是迷茫,孤独过后是成长. 楔子 先给大家说声抱歉,最近一周都没有发文,有一些比较要紧重要的事需要处理. 今天正好得空,本来说准备写SpringIOC相关的东西,但是发现想 ...
- 二、消息队列之如何在C#中使用RabbitMQ
1.什么是RabbitMQ.详见 http://www.rabbitmq.com/. 作用就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源的操作,放入队列,再由另外一个线程,去异步处理这 ...
- 二、消息队列之如何在C#中使用RabbitMQ(转载)
二.消息队列之如何在C#中使用RabbitMQ 1.什么是RabbitMQ.详见 http://www.rabbitmq.com/. 作用就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源 ...
- Flume 读取RabbitMq消息队列消息,并将消息写入kafka
首先是关于flume的基础介绍 组件名称 功能介绍 Agent代理 使用JVM 运行Flume.每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks. Client ...
- RabbitMQ中声明交换器,队列时的,autoDelete=true自动删除的条件
在声明交换器和队列时,有一个属性叫autoDelete,表示是否自动删除. 如果autoDelete=true,表示自动删除.此处我们要理解,自动删除的条件是什么? 这里的关键是,自动删除的条件是向后 ...
- rabbitMQ学习1:消息队列介绍与rabbitmq安装使用
1. 什么是消息队列 生活里的消息队列,如同邮局的邮箱, 如果没邮箱的话, 邮件必须找到邮件那个人,递给他,才玩完成,那这个任务会处理的很麻烦,很慢,效率很低 但是如果有了邮箱, 邮件直接丢给邮箱,用 ...
随机推荐
- SurfaceFlinger( 226): Permission Denial: can't access SurfaceFlinger
MODIFY_PHONE_STATE permission is granted to system apps only. For your information, there are 2 type ...
- ios之如何读取plist
- (NSDictionary*)contactsInfoFromPlistNamed:(NSString*)plistName { NSString *path = [[NSBundle mainB ...
- AsyncTask中各个函数详细的调用过程,初步实现异步任务
AsyncTask内部类可能会产生内存泄露的问题 解决上述内部类可能引起的内存泄露问题的方法 将AsyncTask或者Thread的子类作为单独的类文件,不持有Activity的强引用 将Async ...
- Mysql 编译安装并使用自定义用户启动
本文基于 Redhat Linux 6.7 的环境,Mysql 版本为 5.5.37 安装前的检查 必备的组件,如果没有使用 yum 进行安装,可以使用网上的源,也可以使用本地光盘作为 Yum 源. ...
- Asp.Net Core获取当前上下文对象
HttpContext简介 .Net Core中的HttpContext上下文是个抽象类,命名空间为Microsoft.AspNetCore.Http 所在程序集 \netstandard2.0\Mi ...
- eclipse.ini 内存设置
Ubuntu 系统下,Eclipse 配置文件: vi ~/eclipse/eclipse.ini -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:Max ...
- Kafka学习入门
最近工作中用到了两个很给力的项目,一个是Kafka,一个是Strom.本着自我学习并方便他人的目的,我会将我觉得比较有用的英文文档翻译在此(保留系统专有名词不作翻译). 1kafka介绍 在流式计算中 ...
- cesium and three.js【转】
https://blog.csdn.net/zhishiqu/article/details/79077883 这是威尔逊Muktar关于整合Three.js与铯的客人帖子.Three.js是一个轻量 ...
- 关于微软C#中的CHART图表控件的简单使用【转】
最近公司项目要用到Chart图表控件,这是一个比较老的东西了,目前网络上似乎已经不太流行这个控件,但是只要配置了相关的属性,效果还是可以的.前前后后摸索了好久,接下来谈谈这个件控件最重要的几个属性. ...
- Zindex和png
Z轴在元素设置position为absolute或relative后被激活,起大小由z-index设置,z-index越大,元素位置越靠上.如果多个元素的z-index值相同,那么html标签中后出现 ...