4.生产者 消费者模式的RabbitMQ
1.生产者:
using RabbitMQ.Client;
using System;
using System.Text; namespace Publisher1
{
class Program
{
static void Main(string[] args)
{
ConnectionFactory factory = new ConnectionFactory()
{
HostName = "127.0.0.1",
UserName = "mytest",
Password = "mytest"
};
//第一步:创建connection
var connection = factory.CreateConnection();
//第二步:创建channel
var channel = connection.CreateModel();
//第三步:申明交换机 //第四步:声明一个队列
channel.QueueDeclare("manQueue", true, false, false, null);
//循环往队列中插入100条数据
for (int i = ; i <= ; i++)
{
var msg = Encoding.UTF8.GetBytes($"{i}:希望!");
//第五步:发布消息
channel.BasicPublish(string.Empty, routingKey: "manQueue", basicProperties: null, body: msg);
} Console.WriteLine("完成");
}
}
}
2.消费者
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text; namespace Consumer1
{
class Program
{
static void Main(string[] args)
{
ConnectionFactory factory = new ConnectionFactory()
{
HostName = "127.0.0.1",
UserName = "mytest",
Password = "mytest"
};
//第一步:创建connection
var connection = factory.CreateConnection();
//第二步:创建channel
var channel = connection.CreateModel();
//第三步:申明交换机
channel.QueueDeclare("manQueue", true, false, false, null); //第四步:获取消息
//BasicGet是主动获取 这里要使用发布订阅模式
//var result = channel.BasicGet("manQueue", true);
//var msg = Encoding.UTF8.GetString(result.Body);
EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender,e)=> {
var msg = Encoding.UTF8.GetString(e.Body);
Console.WriteLine(msg);
};
//第五步 要指出 去订阅哪个队列 用哪个消费者
channel.BasicConsume("manQueue", true, consumer);
Console.ReadKey();
}
}
}
3.如果要使用自定义的交换机 不用默认的交换机
using RabbitMQ.Client;
using System;
using System.Text; namespace Publisher1
{
class Program
{
static void Main(string[] args)
{
ConnectionFactory factory = new ConnectionFactory()
{
HostName = "127.0.0.1",
UserName = "mytest",
Password = "mytest"
};
//第一步:创建connection
var connection = factory.CreateConnection();
//第二步:创建channel
var channel = connection.CreateModel();
//第三步:申明交换机
channel.ExchangeDeclare("MyExchange",ExchangeType.Direct,true,false,null);
//由于不是默认的交换机 所以还要跟队列做一个绑定
channel.QueueBind("manQueue", "MyExchange", "manQueue", null); //第四步:声明一个队列
channel.QueueDeclare("manQueue", true, false, false, null);
//循环往队列中插入100条数据
for (int i = ; i <= ; i++)
{
var msg = Encoding.UTF8.GetBytes($"{i}:希望!");
//第五步:发布消息
//这时候要使用指定的交换机
//channel.BasicPublish(string.Empty, routingKey: "manQueue", basicProperties: null, body: msg);
channel.BasicPublish("MyExchange", routingKey: "manQueue", basicProperties: null, body: msg);
} Console.WriteLine("完成");
}
}
}
4.生产者 消费者模式的RabbitMQ的更多相关文章
- Celery 框架学习笔记(生产者消费者模式)
生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类.函数.线程.进程等).产生数据的模块,就形象地称为生产 ...
- day 28 :进程相关,进程池,锁,队列,生产者消费者模式
---恢复内容开始--- 前情提要: 一:进程Process 1:模块介绍 from multiprocessing import Process from multiprocessing impo ...
- java多线程 生产者消费者模式
package de.bvb; /** * 生产者消费者模式 * 通过 wait() 和 notify() 通信方法实现 * */ public class Test1 { public static ...
- LabVIEW之生产者/消费者模式--队列操作 彭会锋
LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...
- 转:Task任务调度实现生产者消费者模式 (个人理解后文)
纯属个人愚见.欢迎加入反驳(PiDou). 1.前文大致就是,利用Queue配置的一个TaskFactory任务调度器.实现生产者消费者模式的例子..首先我就试了 第一种 FIFO(先进先出)的配置. ...
- Lucene.net站内搜索—4、搜索引擎第一版技术储备(简单介绍Log4Net、生产者消费者模式)
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
- MVC异常日志生产者消费者模式记录(异常过滤器)
生产者消费者模式 定义自己的异常过滤器并注册 namespace Eco.Web.App.Models { public class MyExceptionAttribute : HandleErro ...
- 转:Task任务调度实现生产者消费者模式
我们经常会遇到生产者消费者模式,比如前端各种UI操作事件触发后台逻辑等.在这种典型的应用场景中,我们可能会有4个业务处理逻辑(下文以P代表生产者,C代表消费者): 1. FIFO(先进先出) ...
- .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法
1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线 ...
随机推荐
- Python 爬虫从入门到进阶之路(五)
在之前的文章中我们带入了 opener 方法,接下来我们看一下 opener 应用中的 ProxyHandler 处理器(代理设置). 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的. 很 ...
- 【POJ 1226】Substrings
[链接]h在这里写链接 [题意] 给你n个字符串. 让你找一个字符串s. 设s'为这个字符串的逆序. 要求s或者s'在每个字符串里都能够找得到. 并且要求s的长度最长. 求出这个最长的串的长度. [题 ...
- 在Qtcreator中,KDE的Hello World(安装kdelibs5-dev)
我刚开始为KDE编程,我面临的问题是我不知道KDE项目的pro文件是什么,我有一个想法. 我还尝试了 file: 库 += -lkdeui 我还是找不到KApplication的问题 代码 main. ...
- [转]在Win7 64位注册ActiveX控件
原文作者: K_H_H 原文地址: http://blog.sina.com.cn/s/blog_56b96c5a0100ztc7.html 首先必须以管理员身份运行cmd.exe,即在cmd.ex ...
- GitHub的repository的相关操作
原文地址 https://www.jianshu.com/p/038e8ba10e45 1.准备工作 a.有自己的GitHub账号(https://github.com/)b.在自己本地有安装git软 ...
- 【33.10%】【codeforces 604C】Alternative Thinking
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- debian安装git管理本地代码
debian安装git管理本地代码 安装git # aptitude install git-core # aptitude install git-doc git-svn git-email git ...
- [Webpack] Configure Prepack with Webpack
Great improvements and optimizations can be made to the output of bundled code. Prepack provides the ...
- alloc init初始化后对象依然还在父视图
self.TableView=[[UITableView alloc]init]; ........2个cell //下面但方法和addsubviews方法不一样 [self.view insertS ...
- JAVA基本数据类型及其转换
Java语言是一种强类型语言.这意味着每个变量都必须有一个声明好的类型.Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型.Java另外还提供大数字对 ...