C# Windows服务总线接收功能64位整数

C# Windows服务总线接收功能64位整数,c#,azure,servicebus,azureservicebus,C#,Azure,Servicebus,Azureservicebus,Hy 我想在C#中使用ReceiveBatch方法(IEnumerable(Int64))。它需要一个IEnumerable(Int64->long)。我需要这个函数,因为在GetMessageNumber(topicName,subscriptionName)函数中,我使用来自服务总线的intern计数器,它返回一个长值。另一个receive函数只提供int。我尝试了这个函数,但总是收到一条消息NotFoundException未被用户代码修改 未能锁定至少一条指定的消息。这条消息并不正确 v

Hy

我想在C#中使用ReceiveBatch方法(IEnumerable(Int64))。它需要一个IEnumerable(Int64->long)。我需要这个函数,因为在GetMessageNumber(topicName,subscriptionName)函数中,我使用来自服务总线的intern计数器,它返回一个长值。另一个receive函数只提供int。我尝试了这个函数,但总是收到一条消息NotFoundException未被用户代码修改

未能锁定至少一条指定的消息。这条消息并不正确 vorhanden..跟踪ID:a2e6b0f0-fd3d-4594-935d-936FF7B310C_GLBHPC0474_BLBHPC0474,时间戳:2014年3月28日 13:41:57

IEnumerable messageNumber=new long[]
{
GetMessageNumber(topicName,subscriptionName)
};
IEnumerable messages=null;
尝试
{
//使用InternalReceiver接收消息。
messages=subscriptionClient.ReceiveBatch(messageNumber);
但是我用int函数ReceiveBatch Methode(Int32)试过了,它成功了。问题是我需要长值函数,为什么他们使用IEnumerable来使用64位值的接收函数?我如何才能正确使用64位值的函数

        IEnumerable<BrokeredMessage> messages = null;

        long messageNumber = GetMessageNumber(topicName, subscriptionName);

            try
            {
                //Receives a message using the InternalReceiver.
                messages = subscriptionClient.ReceiveBatch(messageNumber);
IEnumerable消息=null;
long messageNumber=GetMessageNumber(topicName,subscriptionName);
尝试
{
//使用InternalReceiver接收消息。
messages=subscriptionClient.ReceiveBatch(messageNumber);

致以最诚挚的问候

ReceiveBatch(maxMessageCount)API用于获取下一批消息,其中返回的消息数量限制为maxMessageCount值。当您使用“MessageNumber”时您是否在某种程度上暗示了消息的ID?这不是ReceveBatch的本意。如果您能澄清该场景,我们可以提供更多指导。

Hy,谢谢您的回答。Messagenumber只获取消息总数,因此GetMessageNumber(主题名、订阅名)函数使用以下代码
QueueDescription queue=GetQueue(queueName);long messageCount=queue.messageCount;
我想实现的是,我可以在读取模式下从队列中获取全部消息,因此消息应该留在队列中,我不想删除它们。要接收所有消息,我使用了ReceiveBatch函数。要知道消息的数量,我使用了上面的函数,但没有使用MessageCount返回一个long,对于ReceiveBatch,我只能使用int。
        IEnumerable<BrokeredMessage> messages = null;

        long messageNumber = GetMessageNumber(topicName, subscriptionName);

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