java - 保留消息的顺序 - 执行器服务 java
问题描述
假设我们有一个接收一组事件的进程。对于每个事件,我们调用一个执行器服务来处理另一个线程中的传入事件。我想知道是否会保留事件的顺序?如果它影响事件的顺序,我如何在不使用队列的情况下保留事件的顺序。
public void process(PacketContext context) {
if (context == null) {
log.error("Packet context is null");
return;
}
PacketContextProtoOuterClass.PacketContextProto packetContextProto =
PacketContextProtoTranslator.translate(context);
for (String clientId : clientList) {
String key = clientId + ServicesProto.topicType.PACKET_CONTEXT.toString();
Notification notification =
Notification.newBuilder()
.setClientId(clientId)
.setPacketContext(packetContextProto)
.build();
if (observerMap.containsKey(key)) {
Runnable runnable =
() -> {
observerMap.get(key).onNext(notification);
};
executorService.execute(runnable);
}
解决方案
推荐阅读
- perl - Perl 更常称为变量声明
- javascript - 保存表格单元格的单击值
- javascript - 是否可以通过用户操作或手动管理的触发器来解决 Promise?是的,所以我们能够形成可编辑的承诺
- openlayers - 如何在 Openlayers 6 中获得一系列功能?
- javascript - 使用 stripe CLI 在 windows 开发机器中测试 webhook
- python - Pandas 数据框的 json 列表
- node.js - 尝试在 cPanel 上部署 Flutter Web App 时出错:“我们很抱歉,但出了点问题..”
- c++ - 错误-1073741674不断发生,我不知道为什么
- javascript - 无法使用 jquery 获取由另一个函数设置的文本字段的值
- node.js - PUT、POST、DELETE - 请求已取消