首页 > 其他分享 >RabbitMQ 生产者与消费者Code

RabbitMQ 生产者与消费者Code

时间:2022-09-08 07:33:09浏览次数:71  
标签:Code Console 生产者 factory RabbitMQ WriteLine using channel

Nuget引入RabbitMQ Client

 

消费者:

// See https://aka.ms/new-console-template for more information
using RabbitMQ.Client;
using System.Text;

Console.WriteLine("Hello, World!");

string dir = AppDomain.CurrentDomain.BaseDirectory;
string? consumerName = Path.GetFileName(Path.GetDirectoryName(dir));

ConnectionFactory factory= new ConnectionFactory(); //创建链接工厂
factory.HostName = "192.168.8.21";
factory.UserName = "yangpeng";
factory.Password = "yangpeng";
factory.Port = 5677; //默认端口号是:5672
factory.AutomaticRecoveryEnabled = true;

using (IConnection connection = factory.CreateConnection())
{
    using (IModel channel = connection.CreateModel())
    {
        //创建队列
        channel.QueueDeclare(queue: "OnlyProducerMessageYangpeng", durable: true, exclusive: false, autoDelete: false, arguments: null);
        //创建交换机
        channel.ExchangeDeclare(exchange: "OnlyProducerMessageExChangeYangpeng", type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);
        //将队列和交换机绑定
        channel.QueueBind(queue: "OnlyProducerMessageYangpeng", exchange: "OnlyProducerMessageExChangeYangpeng", routingKey: String.Empty, arguments: null);
    
        Console.ForegroundColor=ConsoleColor.Red;
        Console.WriteLine($"生产者{consumerName}已经准备就绪");

        int i = 1;

        while (i <= 1000)
        {
            string message = $"{consumerName}生成者发送第{i}条消息;";
            byte[] body=Encoding.UTF8.GetBytes(message);
            channel.BasicPublish(exchange: "OnlyProducerMessageExChangeYangpeng", routingKey: string.Empty, basicProperties: null, body: body);
            Console.WriteLine($"消息已发送{i}条");
            i++;
            Thread.Sleep(500);
        }
    }
}

  

生产者:

// See https://aka.ms/new-console-template for more information
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;

Console.WriteLine("Hello, World!");

string dir = AppDomain.CurrentDomain.BaseDirectory;
string? consumerName = Path.GetFileName(Path.GetDirectoryName(dir));

ConnectionFactory factory = new ConnectionFactory(); //创建链接工厂
factory.HostName = "192.168.8.21";
factory.UserName = "yangpeng";
factory.Password = "yangpeng";
factory.Port = 5677; //默认端口号是:5672

using (IConnection connection = factory.CreateConnection())  //基于链接工厂创建练级
{
    using (var channel = connection.CreateModel()) //基于链接创建信道
    {
        Console.ForegroundColor = ConsoleColor.Green;
        try
        {
            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, ea) =>
            {
                var body = ea.Body;
                var message = Encoding.UTF8.GetString(body.ToArray());
                Console.WriteLine($"{consumerName}成功接受到消息,消息内容为:{message}");
            };
            channel.BasicConsume(queue: "OnlyProducerMessageYangpeng", autoAck: true, consumer: consumer);
            Console.WriteLine("Press[enter] to exit.");
            Console.ReadLine();

        }
        catch (Exception ex) {

            Console.WriteLine(ex.Message);
        }
    }
}

  

标签:Code,Console,生产者,factory,RabbitMQ,WriteLine,using,channel
From: https://www.cnblogs.com/yangpengNetCore/p/16667960.html

相关文章

  • Codeforces Round #816 (Div. 2) A-D
    CodeforcesRound#816(Div.2)A-D传送门A题意:长为n,m的一个棋盘,左上的旗子要去右下,左下的棋子要去右上,每次移动花费为1,但当一个棋子在另一个棋子的轨迹上时,可以花费......
  • Codeforces Round #819 (Div. 1 + Div. 2) A-D
    CodeforcesRound#819(Div.1+Div.2)A-D传送门过程本场A小磕一下,浪费了一点时间,随后B的迷惑题面浪费大量时间,心态发生了变化,不过最后还是在强猜后蒙过了,C又浪费了......
  • Codeforces Round #819 (Div. 1 + Div. 2) 补题 C
    C.Jatayu'sBalancedBracketSequence(思维题)题意:给你一个平衡括号序列(符合书写规则),其任意子区间[i,j]如果是平衡子序列,就建立一条i,j之间的无权无向边,求最后建成的图......
  • 【Leetcode】64. 最小路径和
    题目(链接)给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例1:输入:grid=......
  • IAR Temple Project add some codes cannot go to the accure location,why
    https://www.iar.com/knowledge/support/technical-notes/ide/troubleshooting-the-embedded-workbench-ide/......
  • AtCoder Beginner Contest 267 题解
    只会\(A\simG\)主观难度:\(A<B<C<E<D<F<G<Ex\)A-Saturday分别对周一到周五判断即可。#include<bits/stdc++.h>usingnamespacestd;inlineintread(){int......
  • Codeforces Round #819 (Div. 1 + Div. 2)
    \(\texttt{Unrated}\)好像是印度老哥又一次放了F原题,悲。A考虑保留头尾的数,\(3\)种情况的分讨,即保留\(a_1\),保留\(a_n\),或者都保留。MyCode#include<bits/stdc+......
  • 4. 新版本的生产者API 带有自定义分区和回调函数的生产者
    1.开启进程[node123]systemctlstopfirewalld[node123]zkServer.shstart[node123]kafka-server-start.sh/opt/app/kafka-0.11.0.0/config/server.properties&[......
  • Codeforces Round #816 (Div. 2)
    Preface早上7:20起来早自习,结果不知道背什么遂刷了好久知乎……下午只有一个思修课,一边划水一遍写题,堪堪做了ABCD晚上据说有C语言的程序设计?又可以摸鱼了好耶A.Crossm......
  • VSCode SSH Python 加载很慢的解决方法
    更改服务器设置!把LanhuageServer换一下就行了......