NSQ消息队列使用 #

一、安装 #

nuget安装包BLT.NSQ;

二、使用 #

2.1、添加NSQ服务 #

代码:

public void ConfigureServices(IServiceCollection services)
{
   services.AddBLTNsq(_configuration);
}

2.2、生产者 #

public class ListingService
{
        //注入
        private readonly ISender _sender;
        public ListingService(ISender sender)
        {
        _sender = sender;
        }

		[HttpPost("nsq/msg")]
        public async Task SendToNsq([FromQuery] string msg)
        {
				//发送nsq消息,如消息是批量消息,请使用批量发送方法
            	await _sender.Send("dotnet-topic", msg);
        }
}

2.3、消费者 #

注意:注入请使用App.GetService<T>();方法,请勿在构造方法上添加参数。

[Consumer("dotnet-topic", "test-channel", 100, 100)]//参数分别是 topic、管道名称(可自定义),预加载数量(预先从nsq获取的数量),线程数(同时处理消息的并发数);**线程数不应大于预加载数,否则意义不大**
    	public class NSQTestJob : IHandler	//需要实现IHandler的接口
    {
		//消息处理
        public Task HandleMessage(IMessage message)
        {
			//message.Body类型为byte[],需自行转换
            string msg = Encoding.UTF8.GetString(message.Body);
            Console.WriteLine(msg);
            return Task.CompletedTask;
        }

		//失败消息
        public Task LogFailedMessage(IMessage message)
        {
            Console.WriteLine(message);
            return Task.CompletedTask;
        }
    }
上次更新: 3/10/2023, 3:04:46 PM