给所有订阅者的消息
Message to all subscribers
我使用 Azure 服务总线并希望向主题中的所有订阅者发送消息。客户的应用程序是用 JavaFX 编写的,为了处理我使用下一个代码:
IMessageHandler messageHandler = new IMessageHandler() {
// callback invoked when the message handler loop has obtained a message
public CompletableFuture<Void> onMessageAsync(IMessage message) {
String body = new String(message.getBody());
System.out.println(body);
decorator.showToastWithTitleAndBody("", body);
return receiveClient.abandonAsync(message.getLockToken());
}
public void notifyException(Throwable throwable, ExceptionPhase exceptionPhase) {
System.out.printf(exceptionPhase + "-" + throwable.getMessage());
}
};
receiveClient.registerMessageHandler(
messageHandler,
// callback invoked when the message handler has an exception to report
// 1 concurrent call, messages are auto-completed, auto-renew duration
new MessageHandlerOptions(1, true, Duration.ofSeconds(1)));
在 "onMessageAsync" 方法中,我使用 abandonAsync 不删除消息,下一个接收者将收到消息。但是我在每个应用程序实例中收到了很多内容相同的消息。如果我使用 completeAsync 方法消息将被删除并且没有其他人会收到它。
不删除不重复地向Topic中的所有订阅者发送消息是真的吗?
您的消息处理程序已配置为自动完成传入消息。然而,在回调方法中消息被放弃了。这意味着它们永远不会自动完成,而是根据订阅的 MaxDeliveryCount
配置的次数重新发送(假设您正在从订阅中获取消息)。
处理程序代码应该不放弃并让自动完成取代它,或者禁用自动完成并在处理程序完成后调用.completeAsync()
收到的消息。
另外,自动续订定义为1秒。那是关闭。这应该至少长于 LockDuration
期限或根本不指定。
Is it real to send message to all subscribers in Topic without removing and withou duplicate?
是的。您不需要重复数据删除,因为这不是重复 sent 的问题,而是重复 processing.
我使用 Azure 服务总线并希望向主题中的所有订阅者发送消息。客户的应用程序是用 JavaFX 编写的,为了处理我使用下一个代码:
IMessageHandler messageHandler = new IMessageHandler() {
// callback invoked when the message handler loop has obtained a message
public CompletableFuture<Void> onMessageAsync(IMessage message) {
String body = new String(message.getBody());
System.out.println(body);
decorator.showToastWithTitleAndBody("", body);
return receiveClient.abandonAsync(message.getLockToken());
}
public void notifyException(Throwable throwable, ExceptionPhase exceptionPhase) {
System.out.printf(exceptionPhase + "-" + throwable.getMessage());
}
};
receiveClient.registerMessageHandler(
messageHandler,
// callback invoked when the message handler has an exception to report
// 1 concurrent call, messages are auto-completed, auto-renew duration
new MessageHandlerOptions(1, true, Duration.ofSeconds(1)));
在 "onMessageAsync" 方法中,我使用 abandonAsync 不删除消息,下一个接收者将收到消息。但是我在每个应用程序实例中收到了很多内容相同的消息。如果我使用 completeAsync 方法消息将被删除并且没有其他人会收到它。
不删除不重复地向Topic中的所有订阅者发送消息是真的吗?
您的消息处理程序已配置为自动完成传入消息。然而,在回调方法中消息被放弃了。这意味着它们永远不会自动完成,而是根据订阅的 MaxDeliveryCount
配置的次数重新发送(假设您正在从订阅中获取消息)。
处理程序代码应该不放弃并让自动完成取代它,或者禁用自动完成并在处理程序完成后调用.completeAsync()
收到的消息。
另外,自动续订定义为1秒。那是关闭。这应该至少长于 LockDuration
期限或根本不指定。
Is it real to send message to all subscribers in Topic without removing and withou duplicate?
是的。您不需要重复数据删除,因为这不是重复 sent 的问题,而是重复 processing.