RabbitMQ.EventBus.AspNetCore
6.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
The owner has unlisted this package.
This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package RabbitMQ.EventBus.AspNetCore --version 6.0.0
NuGet\Install-Package RabbitMQ.EventBus.AspNetCore -Version 6.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RabbitMQ.EventBus.AspNetCore" Version="6.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RabbitMQ.EventBus.AspNetCore --version 6.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: RabbitMQ.EventBus.AspNetCore, 6.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install RabbitMQ.EventBus.AspNetCore as a Cake Addin
#addin nuget:?package=RabbitMQ.EventBus.AspNetCore&version=6.0.0
// Install RabbitMQ.EventBus.AspNetCore as a Cake Tool
#tool nuget:?package=RabbitMQ.EventBus.AspNetCore&version=6.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
RabbitMQ.EventBus.AspNetCore
使用说明(>=6.0.0)
1. 注册
public void ConfigureServices(IServiceCollection services)
{
string assemblyName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddRabbitMQEventBus("localhost", 5672, "guest", "guest", "", eventBusOptionAction: eventBusOption =>
{
eventBusOption.ClientProvidedAssembly(assemblyName);
eventBusOption.EnableRetryOnFailure(true, 5000, TimeSpan.FromSeconds(30));
eventBusOption.RetryOnFailure(TimeSpan.FromSeconds(1));
eventBusOption.MessageTTL(2000);
eventBusOption.SetBasicQos(10);
eventBusOption.DeadLetterExchangeConfig(config =>
{
config.Enabled = false;
config.ExchangeNameSuffix = "-test";
});
});
//or
//
//services.AddRabbitMQEventBus(() => "amqp://guest:guest@localhost:5672/", eventBusOptionAction: eventBusOption =>
//{
// eventBusOption.ClientProvidedAssembly(assemblyName);
// eventBusOption.EnableRetryOnFailure(true, 5000, TimeSpan.FromSeconds(30));
// eventBusOption.RetryOnFailure(TimeSpan.FromSeconds(1));
// eventBusOption.MessageTTL(2000);
// eventBusOption.SetBasicQos(10);
// eventBusOption.DeadLetterExchangeConfig(config =>
// {
// config.Enabled = false;
// config.ExchangeNameSuffix = "-test";
// });
//});
}
2. 发消息
2.1 直接发送消息
[Route("api/[controller]")]
[ApiController]
public class EventBusController : ControllerBase
{
private readonly IRabbitMQEventBus _eventBus;
public EventBusController(IRabbitMQEventBus eventBus)
{
_eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus));
}
// GET api/values
[HttpGet]
public IActionResult Send()
{
_eventBus.Publish(new
{
Body = "发送消息",
Time = DateTimeOffset.Now
}, exchange: "RabbitMQ.EventBus.Simple", routingKey: "rabbitmq.eventbus.test");
return Ok();
}
}
2.1 发送消息并等待回复
[Route("api/[controller]")]
[ApiController]
public class EventBusController : ControllerBase
{
private readonly IRabbitMQEventBus _eventBus;
public EventBusController(IRabbitMQEventBus eventBus)
{
_eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus));
}
// GET api/values
[HttpGet]
public async Task<ActionResult<string>> Get()
{
Console.WriteLine($"发送消息{1}");
var body = new
{
requestId = Guid.NewGuid(),
Body = $"rabbitmq.eventbus.test=>发送消息\t{1}",
Time = DateTimeOffset.Now,
};
var r = await _eventBus.PublishAsync<string>(body, exchange: "RabbitMQ.EventBus.Simple", routingKey: "rabbitmq.eventbus.test");
Console.WriteLine($"返回了{r}");
await Task.Delay(500);
return r;
}
}
3. 订阅消息
1. 订阅消息(无回复)
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test")]
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test1")]
public class MessageBody : IEvent
{
public string Body { get; set; }
public DateTimeOffset Time { get; set; }
}
public class MessageBodyHandle : IEventHandler<MessageBody>, IDisposable
{
private readonly ILogger<MessageBodyHandle> _logger;
public MessageBodyHandle(ILogger<MessageBodyHandle> logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
Console.WriteLine("释放");
}
public Task Handle(EventHandlerArgs<MessageBody1> args)
{
_logger.Information(args.Original);
_logger.Information(args.Redelivered);
_logger.Information(args.Exchange);
_logger.Information(args.RoutingKey);
_logger.Information(args.Event.Body);
return Task.CompletedTask;
}
}
1. 订阅消息并回复
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test")]
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test1")]
public class MessageBody : IEvent
{
public string Body { get; set; }
public DateTimeOffset Time { get; set; }
}
public class MessageBodyHandle : IEventResponseHandler<MessageBody, string>, IDisposable
{
private Guid id;
private readonly ILogger<MessageBodyHandle> _logger;
public MessageBodyHandle(ILogger<MessageBodyHandle> logger)
{
id = Guid.NewGuid();
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
_logger.LogInformation("MessageBodyHandle Disposable.");
}
public Task<string> HandleAsync(HandlerEventArgs<MessageBody> args)
{
return Task.FromResult("收到消息,已确认" + DateTimeOffset.Now);
}
}
使用说明(<=5.1.1)
1. 注册
public void ConfigureServices(IServiceCollection services)
{
string assemblyName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name;
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddRabbitMQEventBus(()=>"amqp://guest:guest@192.168.0.252:5672/", eventBusOptionAction: eventBusOption =>
{
eventBusOption.ClientProvidedAssembly(assemblyName);
eventBusOption.EnableRetryOnFailure(true, 5000, TimeSpan.FromSeconds(30));
eventBusOption.RetryOnFailure(TimeSpan.FromMilliseconds(100));
eventBusOption.AddLogging(LogLevel.Warning);
eventBusOption.MessageTTL(2000);
eventBusOption.DeadLetterExchangeConfig(config =>
{
config.Enabled = true;
config.ExchangeNameSuffix = "-test";
});
});
services.AddButterfly(butterfly =>
{
butterfly.CollectorUrl = "http://192.168.0.252:6401";
butterfly.Service = "RabbitMQEventBusTest";
});
}
2. 订阅消息
2.1 自动订阅消息
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceTracer tracer)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.RabbitMQEventBusAutoSubscribe();
app.UseMvc();
}
2.2 手动订阅消息
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IRabbitMQEventBus eventBus)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
eventBus.Serialize<EventMessage, EventMessageHandler>();
app.UseMvc();
}
3. 发消息
[Route("api/[controller]")]
[ApiController]
public class EventBusController : ControllerBase
{
private readonly IRabbitMQEventBus _eventBus;
public EventBusController(IRabbitMQEventBus eventBus)
{
_eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus));
}
// GET api/values
[HttpGet]
public IActionResult Send()
{
_eventBus.Publish(new
{
Body = "发送消息",
Time = DateTimeOffset.Now
}, exchange: "RabbitMQ.EventBus.Simple", routingKey: "rabbitmq.eventbus.test");
return Ok();
}
}
4. 订阅消息
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test")]
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test1")]
[EventBus(Exchange = "RabbitMQ.EventBus.Simple", RoutingKey = "rabbitmq.eventbus.test2")]
public class MessageBody : IEvent
{
public string Body { get; set; }
public DateTimeOffset Time { get; set; }
}
public class MessageBodyHandle : IEventHandler<MessageBody>, IDisposable
{
private readonly ILogger<MessageBodyHandle> _logger;
public MessageBodyHandle(ILogger<MessageBodyHandle> logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public void Dispose()
{
Console.WriteLine("释放");
}
public Task Handle(EventHandlerArgs<MessageBody1> args)
{
_logger.Information(args.Original);
_logger.Information(args.Redelivered);
_logger.Information(args.Exchange);
_logger.Information(args.RoutingKey);
_logger.Information(args.Event.Body);
return Task.CompletedTask;
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Microsoft.Extensions.DependencyInjection (>= 6.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.1)
- Newtonsoft.Json (>= 13.0.1)
- Polly (>= 7.2.3)
- RabbitMQ.Client (>= 6.4.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on RabbitMQ.EventBus.AspNetCore:
Package | Downloads |
---|---|
RabbitMQ.EventBus.AspNetCore.Butterfly
RabbitMQ.EventBus.AspNetCore.Butterfly |
|
DotNetCore.ApiTemplate.CSharp
一个普通的.net core web api模板 |
|
Mjc.Micro.Core
基础包 |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
6.0.2 | 361 | 12/15/2022 | |
5.1.1 | 558 | 2/25/2022 | |
5.0.20 | 1,830 | 6/9/2021 | |
3.1.19.2 | 713 | 2/25/2022 | |
3.1.19 | 1,075 | 5/17/2021 | |
3.1.18 | 314 | 5/17/2021 | |
3.1.17 | 446 | 1/15/2021 | |
3.1.14 | 1,125 | 6/20/2020 | |
2.1.3 | 869 | 1/7/2020 | |
2.1.2 | 682 | 12/28/2019 | |
2.1.1 | 703 | 12/11/2019 | |
2.0.11 | 676 | 12/28/2019 | |
2.0.10 | 671 | 12/11/2019 | |
2.0.9 | 681 | 12/11/2019 | |
2.0.3 | 691 | 11/8/2019 | |
2.0.2 | 761 | 10/21/2019 | |
2.0.1 | 666 | 10/7/2019 | |
2.0.0 | 674 | 10/7/2019 | |
1.2.28 | 6,964 | 5/10/2019 | |
1.2.27 | 903 | 4/17/2019 | |
1.2.20 | 832 | 2/18/2019 | |
1.2.19 | 786 | 2/11/2019 | |
1.2.17 | 1,520 | 12/28/2018 | |
1.2.0 | 677 | 12/11/2019 |