Windows Service Bus接收函数64bit int

时间:2014-03-28 13:53:04

标签: c# azure servicebus azureservicebus

HY,

我想在C#中使用ReceiveBatch-Methode(IEnumerable(Int64))。它需要IEnumerable(Int64 - > long)。我需要这个函数,因为在GetMessageNumber(topicName,subscriptionName)函数中我使用来自服务总线的实习生计数器,它返回一个long值。另一个接收函数只提供一个int。我尝试了这个函数,但我总是得到一个MessageNotFoundException,用户代码是unhadeld。

  

无法至少锁定指定的消息。消息不是   vorhanden..TrackingId:a2e6b0f0-fd3d-4594-935d-936ff7b3210c_GLBHPC0474_BLBHPC0474,时间戳:2014年3月28日   13点41分57秒

http://msdn.microsoft.com/de-de/library/jj657801.aspx

        IEnumerable<long> messageNumber = new long[]
        {
            GetMessageNumber(topicName, subscriptionName)
        };

        IEnumerable<BrokeredMessage> messages = null;

            try
            {
                //Receives a message using the InternalReceiver.
                messages = subscriptionClient.ReceiveBatch(messageNumber);

但我尝试使用int函数ReceiveBatch-Methode(Int32)并且它有效。问题是我需要具有long值的函数以及为什么他们使用IEnumerable来使用64位值的receive函数?如何才能使用64位值正确的函数?

        IEnumerable<BrokeredMessage> messages = null;

        long messageNumber = GetMessageNumber(topicName, subscriptionName);

            try
            {
                //Receives a message using the InternalReceiver.
                messages = subscriptionClient.ReceiveBatch(messageNumber);

祝你好运

1 个答案:

答案 0 :(得分:2)

ReceiveBatch(maxMessageCount)API用于获取下一批消息,其中返回的消息数限制为maxMessageCount值。当你使用&#34; MessageNumber&#34;你在某种程度上暗示了一条消息的ID吗?这不是ReceveBatch的意图。如果您可以澄清情景,那么我们可以提供更多指导。