C# 接收Azure主题中未发生基于会话的筛选

C# 接收Azure主题中未发生基于会话的筛选,c#,azure,azureservicebus,azure-servicebus-topics,C#,Azure,Azureservicebus,Azure Servicebus Topics,我一直在研究启用会话的主题/订阅 使用以下代码创建启用会话的主题/订阅 var subscriptionName = "TestSubscription"; var topicName = "MyPartitionTopic"; var namespaceManager = NamespaceManager.CreateFromConnectionString(RuntimeConfig.ConnectionStrings.PrimaryAzureSb);

我一直在研究启用会话的主题/订阅

使用以下代码创建启用会话的主题/订阅

var subscriptionName = "TestSubscription";
        var topicName = "MyPartitionTopic";
        var namespaceManager = NamespaceManager.CreateFromConnectionString(RuntimeConfig.ConnectionStrings.PrimaryAzureSb);
        if (!namespaceManager.TopicExists(topicName))
        {
            var td = new TopicDescription(topicName);
            td.EnablePartitioning = true;
            namespaceManager.CreateTopic(td);
        }
        if (!namespaceManager.SubscriptionExists(topicName, subscriptionName))
        {
            var sd = new SubscriptionDescription(topicName, subscriptionName);
            sd.RequiresSession = true;
            namespaceManager.CreateSubscription(sd);
        }
在接收器中接收消息时,不会发生基于sessionId的过滤。我在接收器中使用了以下代码

 void ReadMessage(string ConnectionStrings, string topicName, string subscriptionName, MessagingFactory messagingFactory, int batchcount)
    {
        int receivedMessages = 0;
        SubscriptionClient subsClient =
            messagingFactory.CreateSubscriptionClient(topicName, subscriptionName, ReceiveMode.ReceiveAndDelete);
        string sessionId = "sessionId1";
        subsClient.AcceptMessageSession(sessionId);

        IEnumerable<BrokeredMessage> messages = subsClient.PeekBatch(batchcount);
    }
void ReadMessage(字符串连接字符串、字符串主题名、字符串订阅名、MessagingFactory MessagingFactory、int-batchcount)
{
int receivedMessages=0;
SubscriptionClient子客户端=
messagingFactory.CreateSubscriptionClient(topicName、subscriptionName、ReceiveMode.ReceiveAndDelete);
字符串sessionId=“sessionId1”;
subclient.AcceptMessageSession(sessionId);
IEnumerable messages=subclient.PeekBatch(batchcount);
}
例如: 我正在发送带有以下会话ID的消息

场景1。sessionId=sessiond1
场景2。sessionId=sessionId2

接收者:
假设我需要获取只有sessiond1的消息,但使用上述方法,它只返回最上面的一批记录(可能是sessiond1或sessiond2)

  • 如何获得具有相同sessionId的精确匹配消息
  • 除了sessionId之外,是否还有其他功能可以实现同样的功能
  • 提前感谢。

    您使用的方法

    subscriptionClient.AcceptMessageSession()

    将在服务命名空间中的所有启用会话的订阅中返回具有可用会话的消息

    使用

    subscriptionClient.OnAcceptSessionReceiver()的

    接收带有特定“sessionId”的消息