问题标签 [reliable-message-delivery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在没有后端逻辑的情况下使用 Firebase 时如何以原子方式传递消息
我正在使用 Firebase 创建这个聊天应用程序。我想创建一个系统,每个安装了聊天应用程序的设备都负责传递聊天消息。
即使设备没有发送消息,它也会在发送聊天消息的工作人员池中发挥作用。
现在对于普通的聊天应用程序,创建聊天消息的设备可以使用例如OneSignal轻松发送消息。
在我的情况下,用户可以与抽象的事物聊天,并且可以有很多人在收听新的聊天消息。一个正在发送,1000+ 正在收听。
这就是问题所在。如果一个设备负责通知 1000 多个其他设备,它的负载可能会非常沉重。我在想所有其他设备都可以帮助交付,
所以我正在尝试这个 Firebase 数据库通知条目:
当一个设备正在创建一条消息时,它会发布这条新消息NOTIFICATIONS
,所有正在收听的设备都会接收到该消息。
现在,由于所有设备都在监听NOTIFICATIONS
并且会抓住一个NOTIFICATIONS
并发送聊天消息,targetId
因此问题显然会出现在所有其他注册的设备上。
这里是TARGET_VISITORS
。这是注册新聊天消息的用户。
我可以为此 使用 Firebase事务吗?
就像一个设备拿起一个NOTIFICATIONS
然后可能得到 10 个TARGET_VISITORS
(可能有 1000 个以上),并且在一个 Firebase 事务中锁定TARGET_VISITORS
以执行他的 userFirebaseId 或OneSignal PlayerId 上的聊天消息传递。
之后,TARGET_VISITORS
可以保存NOTIFICATIONS
id 并防止收到重复的消息。
也许创建一个访客锁定规则,例如:
updateChildren
然后在上运行数据扇出TARGET_VISITORS_LOCK
,如果失败,则意味着其他设备正在运行updateChildren
,并将通知发送到单个设备。如果设备处于离线状态,她会怎样?
工人池中的许多设备可以NOTIFICATIONS
尝试发送相同的设备,他们会争吵TARGET_VISITORS
,可以这么说
然后是知道何时删除NOTIFICATIONS
条目的问题,当所有人TARGET_VISITORS
都得到通知时将其删除:) 是的,这很有趣 :)
在这一点上,这都是理论上的,我正在阅读战利品,所以希望对此有所了解?
performance - 对 Service Fabric 可靠服务可靠集合的期望
我正在考虑在 Service Fabric 中存储新生成的 orderID。
- 要求:一秒通过1000个订单。
I. 如果需要性能,我应该存储这个可靠的字典吗?
二、有哪些性能注意事项?
三、什么是 Service Fabric 可靠收集容量
参考
可靠的服务可靠的集合
服务结构 dotnet 性能(无结果页面)
https://github.com/Azure-Samples/service-fabric-dotnet-performance/tree/master/ServiceLoadTest
akka - Akka:发送到快照存储的消息的传递保证
发送到快照存储的消息的传递保证是什么,例如DeleteSnapshot
,SaveSnapshot
等?
是至少一次还是最多一次?换句话说,如果我打电话给SaveSnapshot()
,我是否保证SaveSnapshotSuccess/Failure
会收到它们,或者只有在快照实际收到它们并接受或拒绝它们时我才会收到它们?
rabbitmq - amqp/rabbitmq 中的立即标志和强制标志有什么区别?
我指的是rabbitmq AMQP-0.9文档的basic_publish 方法。它指的是消息的两个标志:- 1)立即,2)强制。
强制的
如果消息无法路由到队列,该标志告诉服务器如何反应。如果设置了此标志,则服务器将使用 Return 方法返回不可路由的消息。如果此标志为零,则服务器静默丢弃该消息。
服务器应该实现强制标志。
对于立即:-
即时
如果消息不能立即路由到队列使用者,该标志告诉服务器如何反应。如果设置了此标志,服务器将使用 Return 方法返回无法投递的消息。如果此标志为零,服务器将对消息进行排队,但不保证它会被使用。
两个标志之间有什么区别,因为两者看起来都一样?此外,从 rabbitmq 服务器的角度来看,未传递和未路由的消息有什么区别?
azure - 如何使用带有 Cosmos DB 触发器的 Azure Function 保证至少一次交付
我有一个用于 Azure 函数的 Cosmos DB 触发器。我想将传入文档中的一些数据展平并写入(Azure)SQL Server。
有什么方法可以保证至少一次交货?
我查看了https://hackernoon.com/reliable-event-processing-in-azure-functions-37054dc2d0fc在事件中心事件触发的 Azure 函数的情况下提供了一些选项,但我不确定是否相同适用于导致触发器触发的 CosmosDB changefeed。
在 Cosmos DB 更改源站点https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed上,它指出:
对文档的每次更改在更改提要中只出现一次,并且客户端管理他们的检查点逻辑。更改提要处理器库提供自动检查点和“至少一次”语义。
这是否意味着它实现了与事件中心的检查点系统相同(或类似的东西)?
如果将此 CosmosDB 触发器流应用于 Azure 函数,断路器模式的工作方式是否相同,详见https://hackernoon.com/reliable-event-processing-in-azure-functions-37054dc2d0fc?
botframework - 如何在 BotFramework 中请求未送达的消息?
我可以向 Skype 用户发送消息,我可以接收他的消息。但是当服务器关闭时,我无法收到用户发送给机器人的消息。
例如,Facebook Messenger Platform将每 20 秒重新发送一次 webhook 事件,直到收到 200 OK 响应。Viber 也使用了 webhook url。但Skype至少 15 分钟不会重新发送给我的机器人。
我实现了一个简单的 Echo Bot。机器人消息传递终结点不是Azure。该机器人未发布,但可以添加到 Skype 联系人。我使用REST API。
欢迎任何帮助。对不起,我的英语不好
ios - iOS 推送通知并不总是发送:取决于字符数 + wifi 连接速度 + 设备上的可用空间?
我们在 App Store 上有一个基于 Swift 的应用程序,其中包括一个团队信使。
我们在一些后台推送通知的可传递性方面遇到问题。
如果我们在 iOS 和 Android 设备上使用相同的帐户登录,则所有推送通知都会显示在 Android 设备上,而只有部分推送通知会显示在 iOS 设备上。
基于此,该问题似乎与后端无关。通过 Swift 代码,一切似乎都很好——我们也收到了一些推送通知。
设置:
- 我们通过 APNS 直接从后端 (node.js) 向 iOS 设备发送推送通知。我们不使用任何介于两者之间的提供程序(例如 Pusher)。
问题描述:
- 在 3 台设备上进行测试(电池充满电、蓝牙关闭、请勿打扰禁用、未安装可能阻止推送通知的应用程序等)。
- 设备 A:iOS 10.3.3 上的 iPhone5 - 7GB 可用空间。
- 设备 B:iOS 10.3.3 上的 iPhone5 - 9GB 可用空间。
- 设备 C:iOS11 上的 iPhone5S。
在慢速 wifi 连接上进行测试(即使速度测试显示下载速度为 22Mbps):
- 所有 3 台设备上的所有 10 个字符的推送通知都通过了。
- +20 个字符的推送通知仅显示在设备 B + C 上。
- +30 个字符以上,设备 B + C 上没有收到推送通知。
测试更快的 wifi 连接:
- 使用相同的设备 A 和 B。不包括设备 C。
- 在设备 A + B 上接收并显示最多 497 个字符的推送通知。
- 两个设备中的任何一个都不会收到超过 509 个字符的推送通知。
- 未收到“509 字符消息”后立即发送的短消息(少于 10 个字符) --> 好像通知被暂时屏蔽了。大约一分钟后,会收到并再次显示简短的推送通知(例如 10 个字符)。所有较短的消息都会被接收并显示,直到我们再次发送一条长消息,从而阻止推送通知的传递。
再次测试较慢的 wifi 连接 - 现在体验与较快连接相同的行为。最多显示大约 500 个字符的推送通知,而字符较多的推送通知无法通过,并且似乎会阻止随后发送的较小推送通知的传递。
有效负载大小不应该是问题:由于我们在设备 A 上最初在慢速 wifi 连接上没有收到超过 +20 个字符的推送通知,但能够在更快的 wifi 连接上在同一设备上接收到 497 个字符的推送通知,我想我们应该可以排除这个问题与payload的大小有关。你同意吗?
难道这三个参数的组合会影响推送通知是否被传递?
- 消息长度 + wifi 连接速度 + 可用空间
有关如何解决此问题以确保传递所有推送通知并避免我们遇到的临时阻塞/未传递的任何建议?
提前致谢,
安德烈亚斯
multipeer-connectivity - Multipeer Framework iOS 可靠
有人可以引导我阅读有关使用 Apple 的 Multipeer Framework for iOS 的可靠选项如何用于 sendData 的文档吗?据我所知,它保证了以正确的顺序交付,但是当对等点之间的连接不可靠时会发生什么?当两个设备重新连接时,它们会恢复传输吗?如果接收者永久消失,那么告诉发送者的应用程序消息失败以开始恢复的机制是什么?发件人的出站队列在什么时候被清除?谢谢!
push-notification - 消息/通知系统架构
我们正在开发一个项目来构建一个分布式消息和通知系统,例如 Gmail /whatsapp。
目前我有一些缩放和性能问题。我们的架构在 kafa 消息代理中丢弃消息。消息有效负载具有消息正文和收件人/组。侦听器然后检查消息,然后根据接收者进入数据库。
这种在数据库中创建插入数百万条记录的活动效率不高,而且很耗时,并且会根据代理中存在的消息堆积起来。这导致消息的不规则传递时间段。
谁能指导我如何解决这个问题。
我总是对 gmail / whatsapp 架构的原理很感兴趣,他们能够在多长时间内立即将消息传递给数以亿计的用户。