我想注入多个具有相同连接字符串但不同队列名称的 ServiceBusClient。
_services.TryAddSingleton(implementationFactory =>
{
var serviceBusConfiguration = implementationFactory.GetRequiredService<Microsoft.Extensions.Options.IOptions<UserEventConsumerSetting>>().Value;
var serviceBusClient = new ServiceBusClient(serviceBusConfiguration.ServiceBusConnectionString, new ServiceBusClientOptions
{
TransportType = ServiceBusTransportType.AmqpWebSockets
});
return serviceBusClient.CreateReceiver(serviceBusConfiguration.ServiceBusQueueName, new ServiceBusReceiverOptions
{
ReceiveMode = ServiceBusReceiveMode.PeekLock
});
});
Run Code Online (Sandbox Code Playgroud)
为了使用我必须创建 ServiceBusSender 实例。
private readonly ServiceBusSender _serviceBusSender;
public CarReservationMessagingService(ServiceBusSender serviceBusSender)
{
_serviceBusSender = serviceBusSender ?? throw new ArgumentNullException(nameof(serviceBusSender));
}
public async Task PublishNewCarReservationMessageAsync(CarReservation carReservation)
{
var carReservationIntegrationMessage = new CarReservationIntegrationMessage
{
Id = Guid.NewGuid().ToString(),
CarId = carReservation.CarId,
CustomerId = carReservation.CustomerId,
RentFrom = carReservation.RentFrom,
RentTo = carReservation.RentTo
};
var serializedMessage …Run Code Online (Sandbox Code Playgroud) .net c# dependency-injection azure-web-app-service asp.net-core
如果整数属性为 0 忽略它,来自 json 对象。
[JsonProperty("amount")]
public int Amount { get; set; }
Run Code Online (Sandbox Code Playgroud)
我不想在应用程序中全局应用它。