bri*_*ete 1 .net c# azure azureservicebus azure-functions
我正在尝试侦听可以包含具有多种事件类型的消息的服务总线。当消息到达时,我想根据事件类型对其进行处理。我有 2 个 azure 函数来处理不同的事件类型消息,但是当一个函数接收到消息时,另一个函数不会被触发。是否可以同时触发它们并让它们决定由哪一个处理消息?
这是一些示例代码,它们位于两个独立的项目中:
[FunctionName("Function1")]
public async Task RunAsync(
[ServiceBusTrigger("queueName", Connection = "connectionName")]
Message message,
MessageReceiver messageReceiver,
ILogger log)
{
var body = Encoding.Default.GetString(message.Body);
var messageType = _helper.GetMessageType(body);
if (messageType is not MessageType.Type1)
return;
// business logic
await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
}
[FunctionName("Function2")]
public async Task RunAsync(
[ServiceBusTrigger("queueName", Connection = "connectionName")]
Message message,
MessageReceiver messageReceiver,
ILogger log)
{
var body = Encoding.Default.GetString(message.Body);
var messageType = _helper.GetMessageType(body);
if (messageType is not MessageType.Type2)
return;
// business logic
await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
}
Run Code Online (Sandbox Code Playgroud)
对于 Azure 服务总线队列,这是不可能的,因为队列只能有一个使用者。
更好的方法是使用Azure Service Bus Topics and Subscriptions
. 您可以将消息发送到主题,然后创建订阅过滤规则,以便消息发送到适当的订阅。
然后,您可以让 2 个 Azure Functions,每个函数监听一个单独的订阅。
归档时间: |
|
查看次数: |
1876 次 |
最近记录: |