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)