首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消息队列设计

消息队列设计
EN

Stack Overflow用户
提问于 2014-01-13 22:35:49
回答 2查看 334关注 0票数 0

这里是一个场景

我有一个离线应用程序,当用户按下发布时,我想

  • 打印2份至打印机A
  • 打印1份至打印机B
  • 打印3份至打印机C
  • 向收件人A发送txt消息
  • 向收件人B发送txt消息
  • 将数据导出到外部系统
  • 与在线网站同步数据
  • 可以将其他各种作业添加到列表中。

所以我想问的是,有一个更好的结构我可以使用,我希望避免一个完整的消息排队系统,因为这是一个独立的桌面应用程序。

我开始为每个任务创建一个数据库表,并将作业编号放在列表中,然后处理它,并在完成后从列表中删除它。

虽然这很好,但是当作业失败时会出现问题,我没有重试超时或任何东西,每次添加任务(不经常)时,我都必须添加一个新表,这不是很好。

我遇到的其他问题是,所有的任务都有不同的参数,我应该只是使用json或其他什么来存储这些参数吗?目前,数据库中的每个表都有不同的参数列。

EN

回答 2

Stack Overflow用户

发布于 2014-01-13 22:58:22

听起来是MQ的理想工作。发布时,可以使用适当的参数将作业添加到队列中。然后,您需要10 (或其他)读取器来阅读这些消息,并管理打印/发短信/导出等等。从您所描述的情况来看,使用数据库滚动自己是没有意义的。

超时/重试是一个业务问题,您需要解决如何提醒和解决问题。这不是你想象中的技术问题。

就我个人而言,每个目标都有一个消息类型/队列。JSON或其他格式将取决于您的平台。通常,您只需使用平台提供的任何机制将包含所有数据的对象序列化到队列中。最坏的情况是,您将XML添加到队列中。

票数 0
EN

Stack Overflow用户

发布于 2014-01-17 03:22:00

如果您的应用程序不能跨系统扩展,我认为您不需要MQ。消息队列最适合于分布式系统。您已经提到,它将是一个桌面应用程序。

在设计应用程序时,您必须从给定的需求中识别组件。您目前拥有的是一组需求。您需要将它们分解为可以重用的组件。

重试和超时是任务的参数.当您通过组件进行任务时,您可以处理它们。

您将需要一个数据库,但不需要高比例的数据库。你只需要一个持久化商店。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21102770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档