Azure Service Bus Premium-地理位置恢复-丢弃的邮件

Azure Service Bus Premium-地理位置恢复-丢弃的邮件,azure,azureservicebus,azure-servicebus-queues,Azure,Azureservicebus,Azure Servicebus Queues,我在一个区域中有一个高级服务总线名称空间,并在另一个区域中创建了另一个名称空间作为辅助名称空间。我已在主设备上启用了地理恢复,并配置了与辅助设备的配对。我运行了一个测试,不断地向一个主题发送消息,并且订阅了一个接收应用程序。发送方将发送“发送消息:消息{序列号}”,接收方将显示“接收消息:序列号:{SB分配序列号}正文:消息{序列号}”。但是,当我试图通过门户启动到辅助服务器的故障切换时,我注意到,尽管发送方继续发送消息,但接收方在完成故障切换时丢弃了一些消息。请参阅下文: 来自发件人的日志:

我在一个区域中有一个高级服务总线名称空间,并在另一个区域中创建了另一个名称空间作为辅助名称空间。我已在主设备上启用了地理恢复,并配置了与辅助设备的配对。我运行了一个测试,不断地向一个主题发送消息,并且订阅了一个接收应用程序。发送方将发送“发送消息:消息{序列号}”,接收方将显示“接收消息:序列号:{SB分配序列号}正文:消息{序列号}”。但是,当我试图通过门户启动到辅助服务器的故障切换时,我注意到,尽管发送方继续发送消息,但接收方在完成故障切换时丢弃了一些消息。请参阅下文:

来自发件人的日志:

Sending message: Message 244
Sending message: Message 245
Sending message: Message 246
Sending message: Message 247
Sending message: Message 248
Sending message: Message 249
Sending message: Message 250
Sending message: Message 251
Sending message: Message 252
Sending message: Message 253
Sending message: Message 254
Sending message: Message 255
Sending message: Message 256
Sending message: Message 257
Sending message: Message 258
Sending message: Message 259
Sending message: Message 260
Received message: SequenceNumber:255 Body:Message 244
Received message: SequenceNumber:256 Body:Message 245
Received message: SequenceNumber:257 Body:Message 246
Received message: SequenceNumber:258 Body:Message 247
Message handler encountered an exception Microsoft.Azure.ServiceBus.UnauthorizedException: Connection rejected after GeoDRFailOver. TrackingId:7bb0b78d-2bf5-4807-8bcb-c831b00c6692, SystemTracker:AmqpGatewayProvider, Timestamp:2019-08-12T17:42:38
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<OnReceiveAsync>d__86.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<>c__DisplayClass64_0.<<ReceiveAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.RetryPolicy.<RunOperation>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Azure.ServiceBus.RetryPolicy.<RunOperation>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<ReceiveAsync>d__64.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<ReceiveAsync>d__62.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.MessageReceivePump.<MessagePumpTaskAsync>d__11.MoveNext().
Exception context for troubleshooting:
- Endpoint: rjpremium.servicebus.windows.net
- Entity Path: topic1/Subscriptions/sub1
- Executing Action: Receive
Received message: SequenceNumber:1 Body:Message 254
Received message: SequenceNumber:2 Body:Message 255
Received message: SequenceNumber:3 Body:Message 256
Received message: SequenceNumber:4 Body:Message 257
Received message: SequenceNumber:5 Body:Message 258
Received message: SequenceNumber:6 Body:Message 259
Received message: SequenceNumber:7 Body:Message 260
来自接收方的日志:

Sending message: Message 244
Sending message: Message 245
Sending message: Message 246
Sending message: Message 247
Sending message: Message 248
Sending message: Message 249
Sending message: Message 250
Sending message: Message 251
Sending message: Message 252
Sending message: Message 253
Sending message: Message 254
Sending message: Message 255
Sending message: Message 256
Sending message: Message 257
Sending message: Message 258
Sending message: Message 259
Sending message: Message 260
Received message: SequenceNumber:255 Body:Message 244
Received message: SequenceNumber:256 Body:Message 245
Received message: SequenceNumber:257 Body:Message 246
Received message: SequenceNumber:258 Body:Message 247
Message handler encountered an exception Microsoft.Azure.ServiceBus.UnauthorizedException: Connection rejected after GeoDRFailOver. TrackingId:7bb0b78d-2bf5-4807-8bcb-c831b00c6692, SystemTracker:AmqpGatewayProvider, Timestamp:2019-08-12T17:42:38
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<OnReceiveAsync>d__86.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<>c__DisplayClass64_0.<<ReceiveAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.RetryPolicy.<RunOperation>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.Azure.ServiceBus.RetryPolicy.<RunOperation>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<ReceiveAsync>d__64.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.Core.MessageReceiver.<ReceiveAsync>d__62.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.ServiceBus.MessageReceivePump.<MessagePumpTaskAsync>d__11.MoveNext().
Exception context for troubleshooting:
- Endpoint: rjpremium.servicebus.windows.net
- Entity Path: topic1/Subscriptions/sub1
- Executing Action: Receive
Received message: SequenceNumber:1 Body:Message 254
Received message: SequenceNumber:2 Body:Message 255
Received message: SequenceNumber:3 Body:Message 256
Received message: SequenceNumber:4 Body:Message 257
Received message: SequenceNumber:5 Body:Message 258
Received message: SequenceNumber:6 Body:Message 259
Received message: SequenceNumber:7 Body:Message 260
收到的消息:序列号:255正文:消息244
收到的消息:SequenceNumber:256正文:消息245
收到的消息:SequenceNumber:257正文:消息246
收到的消息:SequenceNumber:258正文:消息247
消息处理程序遇到异常Microsoft.Azure.ServiceBus.UnauthorizedException:GeoDRFailOver后拒绝连接。TrackingId:7bb0b78d-2bf5-4807-8bcb-C831B000C6692,系统跟踪器:AmqpGatewayProvider,时间戳:2019-08-12T17:42:38
位于Microsoft.Azure.ServiceBus.Core.MessageReceiver.d_u86.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Azure.ServiceBus.Core.MessageReceiver.c__DisplayClass64_0.d.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Azure.ServiceBus.RetryPolicy.d_u19.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
在Microsoft.Azure.ServiceBus.RetryPolicy.d_u19.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Azure.ServiceBus.Core.MessageReceiver.d_u64.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Microsoft.Azure.ServiceBus.Core.MessageReceiver.d_u62.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
位于Microsoft.Azure.ServiceBus.MessageReceivePump.d_u11.MoveNext()。
故障排除的异常上下文:
-端点:rjpremium.servicebus.windows.net
-实体路径:topic1/Subscriptions/sub1
-执行操作:接收
收到的消息:SequenceNumber:1正文:消息254
收到的消息:SequenceNumber:2正文:消息255
收到的消息:SequenceNumber:3正文:消息256
收到的消息:SequenceNumber:4正文:消息257
收到的消息:SequenceNumber:5正文:消息258
收到的消息:SequenceNumber:6正文:消息259
收到的消息:SequenceNumber:7正文:消息260

247和254之间的消息将被丢弃。虽然发送者发送了所有这些消息,但接收者从未收到这些消息。如果我启用地理恢复,那么接收者也应该接收这些消息?

当使用Azure服务总线(Premium)的地理灾难恢复功能时,您必须首先配对主命名空间和辅助命名空间。完成后,您将从该时间点开始使用别名。别名可确保连接到主命名空间的应用程序在发生故障转移时继续运行。确保在发送方和接收方应用程序中使用颁发的别名。有关详细信息,请参阅。

在使用Azure Service Bus(Premium)的地理灾难恢复功能时,必须首先将主命名空间和辅助命名空间配对。完成后,您将从该时间点开始使用别名。别名可确保连接到主命名空间的应用程序在发生故障转移时继续运行。确保在发送方和接收方应用程序中使用颁发的别名。有关详细信息,请先参阅。

引用的(肖恩·费尔德曼也同时指出)

“地理位置灾难恢复当前仅确保元数据(队列、主题、订阅、筛选器)在配对时从主命名空间复制到辅助命名空间。”

这意味着消息尚未被复制

第二,GeoDR适用于一些罕见的场景,在这些场景中,你必须搬出该地区,因为那里的某些东西不知何故完全被破坏了。这意味着上面的测试场景不太可能反映任何现实。您将面临一种危机情况,在这种情况下,您会发生停机,然后会非常谨慎地放弃该地区,并不仅对服务总线进行故障切换,还对该地区的所有其他设备进行故障切换

首先,引用《圣经》(肖恩·费尔德曼也同时指出)

“地理位置灾难恢复当前仅确保元数据(队列、主题、订阅、筛选器)在配对时从主命名空间复制到辅助命名空间。”

这意味着消息尚未被复制

塞科