首页 > 其他分享 >rabbitmq 发送端和消费端 dotnet

rabbitmq 发送端和消费端 dotnet

时间:2024-10-10 21:59:52浏览次数:12  
标签:string factory rabbitmq 发送 var dotnet using true channel

# RabbitMQ

发送端

using System.Text;
using RabbitMQ.Client;

var factory = new ConnectionFactory();
factory.HostName = "127.0.0.1"; //RabbitMQ服务器地址
factory.DispatchConsumersAsync = true;
string exchangeName = "exchange1"; //交换机的名字
string eventName = "myEvent"; // routingKey的值
using var conn = factory.CreateConnection();

while (true)
{
    string msg = DateTime.Now.TimeOfDay.ToString(); //待发送消息
    using (var channel = conn.CreateModel()) //创建信道
    {
        var properties = channel.CreateBasicProperties();
        properties.DeliveryMode = 2;
        channel.ExchangeDeclare(exchange: exchangeName, type: "direct"); //声明交换机
        byte[] body = Encoding.UTF8.GetBytes(msg);
        channel.BasicPublish(
            exchange: exchangeName,
            routingKey: eventName,
            mandatory: true,
            basicProperties: properties,
            body: body
        ); //发布消息
    }
    Console.WriteLine("发布了消息:" + msg);
    Thread.Sleep(1000);
}

消费端

using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

var factory = new ConnectionFactory();
factory.HostName = "127.0.0.1";
factory.DispatchConsumersAsync = true;
string exchangeName = "exchange1";
string eventName = "myEvent";
using var conn = factory.CreateConnection();
using var channel = conn.CreateModel();
string queueName = "queue1";
channel.ExchangeDeclare(exchange: exchangeName, type: "direct");
channel.QueueDeclare(
    queue: queueName,
    durable: true,
    exclusive: false,
    autoDelete: false,
    arguments: null
);
channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: eventName);
var consumer = new AsyncEventingBasicConsumer(channel);
consumer.Received += Consumer_Received;
channel.BasicConsume(queue: queueName, autoAck: false, consumer: consumer);
Console.ReadLine();
async Task Consumer_Received(object sender, BasicDeliverEventArgs args)
{
    try
    {
        var bytes = args.Body.ToArray();
        string msg = Encoding.UTF8.GetString(bytes);
        Console.WriteLine(DateTime.Now + "收到了消息" + msg);
        channel.BasicAck(args.DeliveryTag, multiple: false);
        await Task.Delay(800);
    }
    catch (Exception ex)
    {
        channel.BasicReject(args.DeliveryTag, true);
        Console.WriteLine("处理收到的消息出错" + ex);
    }
}

标签:string,factory,rabbitmq,发送,var,dotnet,using,true,channel
From: https://www.cnblogs.com/zhuoss/p/18457266

相关文章

  • YoloDotNet v2.1:实时物体检测的利器
    项目介绍YoloDotNetv2.1是一个基于C#和.NET8的实时物体检测框架,专为图像和视频中的物体检测而设计。它集成了Yolov8~Yolov11模型,通过ML.NET和ONNX运行时实现高效的物体检测,并支持GPU加速(使用CUDA)。YoloDotNet不仅支持传统的物体检测,还涵盖了分类、OBB检测、分......
  • 尚硅谷rabbitmq 2024 第50节 集群负载均衡 核心功能 答疑
    消费者用@RabbitListener或者@KafkaLisenter,那生产者呢(springboot)在SpringBoot中,生产者可以使用`RabbitTemplate`来发送消息到RabbitMQ。以下是一个简单的示例:```javaimportorg.springframework.amqp.rabbit.core.RabbitTemplate;importorg.springframework.beans.fac......
  • 尚硅谷rabbitmq 2024 集群ui 第49节 答疑三
    rabbitmq集群做负载均衡还要用haproxy才行吗?kafka也是这样要借助外部工具吗?是的,在RabbitMQ集群中,通常会使用HAProxy或类似的负载均衡器来分配客户端请求。这是因为RabbitMQ本身并不具备内置的负载均衡功能。HAProxy可以帮助你将客户端连接均匀地分配到不同的RabbitMQ......
  • 第七章 RabbitMQ之交换机
    目录一、介绍二、Fanout Exchange2.1.案例演示 2.1.1.创建SpringBoot工程2.1.2.父工程pom依赖2.1.3.生产者pom依赖  2.1.4.生产者配置文件2.1.5. 生产者核心代码 2.1.6.消费者RabbitMQConfig 2.1.7.消费者pom依赖2.1.8.消费者配置文件2.1.9. 消费......
  • tp6发送邮件功能如何实现?tp6的使用教程?
    tp6发送邮件有哪些技巧?tp6发送邮件步骤与设置指南?tp6(ThinkPHP6)作为一款流行的PHP框架,提供了强大的邮件发送功能,使得开发者能够轻松实现这一需求。AokSend将详细介绍如何在tp6中实现邮件发送功能。tp6发送邮件:模板管理在实际应用中,邮件内容通常需要根据不同的场景进行定制......
  • uibot发送邮件:自动化邮件发送教程详解!
    uibot发送邮件的操作指南?uibot发送邮件的两种方式?在现代办公环境中,自动化流程的引入极大地提高了工作效率。uibot发送邮件功能成为了许多企业和个人实现邮件自动化发送的首选工具。AokSend将详细介绍如何使用uibot发送邮件。uibot发送邮件:准备工作确保您已经安装并配置好了......
  • Spring Boot 集成 RabbitMQ 消息事务(生产者)
    1.SpringBoot集成RabbitMQ消息事务(生产者)1.1.版本说明1.2.概览1.2.1.最大努力单阶段提交模式1.2.2.成功的业务流程1.2.3.失败的业务流程1.3.新建数据库表1.4.Spring配置1.5.定义常量1.6.配置交换机和队列1.7.定义RabbitMQ消息事务管理器1.8.定......
  • RabbitMQ目录发送方确认confirm:确认模式2.重复调用接口时,会提示错误所以改进,自己搞一
    目录发送方确认confirm:确认模式2.重复调用接口时,会提示错误所以改进,自己搞一个template,return退回模式:RabbitMQ的可靠性/保证消息不丢失..消息在交换机中无法路由到制定队列:return模式重试机制发送方确认当消息的生产者发送消息以后,怎么知道是否到达服务器呢?......
  • springboot 整合 rabbitMQ(2)
    springboot整合rabbitMQ(1)-CSDN博客上期说了rabbitMQ的基础用法(普通队列模式)这期学习一下如何防止消息重复消费和进阶用法(订阅者模式)目录重复消费问题导致RabbitMQ重复消费问题的原因:解决思路代码实现(这里在上一期的代码上进行修改)生产者:消费者:订阅者模式:是什么:......
  • Python 文件发送到对方服务器文件夹内
    为了将Python文件发送到服务器的文件夹内,你可以使用paramiko库来实现SSH连接,并进行文件传输。以下是一个简单的例子:首先,安装paramiko库(如果你还没有安装的话): pipinstallparamiko 然后,使用以下Python代码将文件发送到远程服务器:  importparamiko#设置SSH......