我在一个区域中有一个命名空间,并在另一个区域中创建了另一个,作为辅助。我已经在主服务器上启用了Geo-恢复,并配置了与辅助服务器的配对。我运行了一个测试来不断地向一个主题发送消息,并且我已经订阅了一个接收应用程序。发送方将发送“发送消息:消息{序列中的号码}”,接收方将显示“接收消息: SequenceNumber:{SB分配的序列号}主体:消息{序列中的编号”。但是,当我试图通过Portal启动第二次故障转移时,我注意到,虽然发送方继续发送消息,但接收方在完成故障转移时丢弃了一些消息。请见下文:
发件人的日志:
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在247和254之间的消息被丢弃。虽然发送者发送了所有这些信息,但接收方从未接收到这些消息。如果我启用Geo-恢复,接收方也应该接收这些消息吗?
发布于 2019-08-12 18:37:54
当使用Azure Service Bus (高级)的geo-灾难恢复功能时,您必须首先对主名称空间和次要命名空间进行配对。完成后,您将得到一个别名,以便从那个时间点开始使用。别名确保连接到主命名空间的应用程序在发生故障转移时继续工作。确保在发送方和接收方应用程序中使用已颁发的别名。有关详细信息,请参阅文档。
发布于 2019-08-14 14:20:14
首先,引用文档的话(正如Sean所指出的那样)
Geo-灾难恢复目前只确保元数据(队列、主题、订阅、筛选器)在配对时从主名称空间复制到次要命名空间。
这意味着消息还没有被复制。
第二,GeoDR适用于一些罕见的场景,在这种情况下,您必须迁出该区域,因为那里的某些东西不知何故完全损坏了。这意味着上面的测试场景不太可能反映任何现实。您将面临一种危机情况,您有一个停机,然后作出非常慎重的努力,放弃该地区,并做了故障转移,不仅服务巴士,而且所有你拥有的东西。
https://stackoverflow.com/questions/57466136
复制相似问题