MSMQ 与临时表转储

2024-03-04

我知道这个问题之前已经被问过。但环顾四周,我还是拿不定主意该走哪条路。以下是我的情况,希望对你有帮助:

我们将提供一系列网络服务,数百个移动应用程序将按计划访问这些服务。这些服务将在设备上提供数据,并将新信息发送到设备并从设备返回。从设备返回的数据需要更新单个中央 SQL 服务器数据库,该数据库还为多个桌面应用程序和网站提供数据。

为了减少这些服务的请求/响应时间,我们决定在事后处理来自设备的数据,方法是将它们粘贴在 MSMQ 实例中,或者将序列化对象存储在临时数据存储中,并让Windows 服务稍后处理它们。

这就是我的选择,但除此之外,还有一些可能对你们有帮助的建议:

  • 从设备返回的数据不会以需要在服务器端排序的较小消息包的形式返回。
  • 我对MSMQ一无所知,但我以前写过Windows服务。不过,如果需要的话,我可以毫无问题地选择 MSMQ。
  • 我想将设备的响应保留在某个地方,以防处理由于数据引起的某种原因而失败。通过这种方式,我可以询问数据并查看是否存在问题,即设备允许用户添加注释以扩展服务器端数据库中相关字段的长度。

有了这些信息,您认为我值得学习 MSMQ 还是应该坚持使用更简单的解决方案?

Chris.


MSMQ 不是一个糟糕的选择,而且绝对不难学习,但请记住,您应该注意一些限制。

Cons:

  • 每个队列只能是2GB。
  • 每条消息 4MB(尽管可以通过将 MSMQ 与 WCF 结合使用来修复 4MB 限制)。
  • 仅适用于 Windows,因此您只能将其与 .NET、C/C++ 或 COM 库一起用于支持 COM 的环境。

Pros:

  • 支持Windows网络负载均衡器。
  • 支持微软集群服务。
  • 与活动目录集成。
  • 随 Windows 一起提供。
  • 支持交易。
  • MSMQ 消息可以通过 Windows 事件日志中的审核消息进行跟踪。
  • 消息可以在发送时自动进行身份验证(签名)或加密,并在接收时进行验证和解密。

您可能需要考虑的另一种方法是将数据写入临时表。这可能是一个好主意,因为您希望有一个消息积压日志。

当我不了解系统架构的其余部分时,很难给出建议,但我希望这个答案能有所帮助。

有用的链接

在 .NET 中编程 MSMQ - 第 1 部分 http://www.codeproject.com/KB/dotnet/mgrmsmq.aspx
将 MSMQ 与 WCF 结合使用 http://code.msdn.microsoft.com/msmqpluswcf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MSMQ 与临时表转储 的相关文章

  • zend 模型架构

    假设我的数据库中有两个表 项目和用户 我创建了两个扩展 Zend Db Table Abstract 的模型 Model DbTable Users and Model DbTable Projects 现在 创建一个实例是一个好的模式吗
  • 最佳数据库变更控制方法

    作为数据库架构师 开发人员和顾问 有很多问题可以回答 其中之一 虽然我最近被问到 但仍然无法很好地回答 那就是 保持数据库变更记录 组织并能够在单开发人员或多开发人员环境中有效推出的最佳方法或技术之一是什么 这可能涉及存储过程和其他对象脚本
  • MSMQ如何管理消息?

    看来MSMQ不使用任何数据库管理系统来管理消息 MSMQ如何管理消息 它将消息存储在平面文件中吗 我正在尝试实现一个消息管理系统 MSMQ 使用位于 windir system32 msmq 中的平面文件 如果你想实现自己的队列 我建议你看
  • 微服务版本控制

    就在运行时支持同一服务的多个版本化部署以及消费者如何使用不同版本而言 适应基于微服务的架构中的版本控制的最佳实践是什么 1 如果我们使用基于路由的版本控制作为提到的方法之一here http niels nu blog 2016 micro
  • n 层架构 - BLL、DAL 和接口。什么是最佳实践?

    我有一个关于 n 层架构的问题 在问这个问题之前 我想了很久 因为这里已经有很多类似的问题了 但是 在看了一天半并阅读了其他答案之后 我仍然不确定 各种看似相似的术语和不同的方法让我感到困惑 如果我在不同的类库中有一个 BLL 和一个 DA
  • 在事务结束时发送事件

    我有一个服务对象的接口 如下所示 为简洁起见进行了简化 public interface ItemService public Item getItemById String itemId int version public void c
  • 使用 RabbitMq 锁定和批量获取消息

    我正在尝试以一种更非常规的方式使用 RabbitMq 尽管此时我可以根据需要选择任何其他消息队列实现 消费者不会将 Rabbit 推送消息留给我的消费者 而是连接到一个队列并获取一批 N 条消息 在此期间它会消费一些消息 并可能拒绝一些消息
  • MVP 和 GWT 小部件之间的通信

    如果我将 MVP 模式与 GWT 结合使用 如 2009 年 Google I O 中的 GWT 架构最佳实践讨论 但已将信息分散到多个小部件中 那么应该如何填充值对象 假设我有一个 EditPersonView Presenter 一个
  • 使用 i386 arch 而不是 x86_64 在 OSX 上构建 libFLAC

    我正在尝试构建 libFLAC 以在我的项目中使用 但是当涉及到链接时 GCC 会忽略该库 因为它说它不是为当前体系结构 i386 构建的 当我以 64 位编译程序时 它正确链接了库 这意味着该库是针对 x86 64 架构编译的 不幸的是
  • 在 PHP 中使用消息队列与普通 Cron 作业之间的区别

    我们有一个基于 PHP 构建的大型 Web 应用程序 该应用程序允许安排推文和墙贴 并且有从服务器发出的预定电子邮件 我所说的 计划 是指这些 PHP 脚本计划在特定时间运行cron 大约有 7 个 PHP 文件可以完成上述工作 我一直听说
  • 插件架构中的反射与属性

    我正在开发一个在启动时从子目录加载插件的应用程序 目前我正在通过使用反射来迭代每个程序集的类型并查找实现 IPluginModule 接口的公共类来实现此目的 由于反射涉及性能影响 并且我预计一段时间后会有多个插件 我想知道定义在程序集级别
  • 消息在事务处理时未到达 MSMQ

    我在本地计算机中创建了一个私有 MSMQ 我使用以下 C 代码将消息发送到队列 当我将队列更改为事务性队列时 消息未到达 MSMQ 但是 Send 方法中没有抛出异常 我需要做出什么改变才能使其发挥作用 using System using
  • 在 Codeigniter 中使用/嵌入 Ember js

    我即将开始开发一个 Web 应用程序 使用 Ember js 作为前端技术 使用 Codeigniter 作为后端 我遇到的问题是如何在 codeigniter 中嵌入或使用 ember js 可以通过 Web 服务从 codeignite
  • WPF 和 WCF 应用程序的用户身份验证/授权的“最佳实践”是什么?

    假设我有一个 NET 富客户端 WPF 应用程序 它将同时部署在 3 个不同的场景中 客户端和服务器代码在单个进程中运行 客户端代码在 Intranet 计算机上运行 并通过 WCF 与运行应用程序 域 基础设施代码的服务器计算机进行通信
  • 服务作为 SOA 中的中介

    我知道什么是 通常的 中介设计模式 维基百科中有一些描述 http en wikipedia org wiki Mediator pattern http en wikipedia org wiki Mediator pattern 在我的
  • 定时任务应该放在哪一层?

    我正在尝试使用分层架构来实现 DDD 应用程序 我有 基础设施层 实现应用程序的技术特定部分的层 领域层 包含领域模型的层 应用层 包含与领域模型交互的干扰的层 接口层 从外部接收事件的层 经典的 3 层 基础设施 架构非常清晰 但我的应用
  • 使用 mosca MQTT 的请求响应模式

    有没有办法使用 mosca MQTT 实现请求响应模式 以 检查客户端的回复 如果在预期时间内未收到预期回复 则重新发布 我相信这在 Mqtt 5 中是可能的 但截至目前 我必须使用 QoS 1 的 Mosca 代理 支持直到 Mqtt 3
  • linq2sql,存储库模式 - 如何从两个或多个表查询数据?

    我使用存储库模式 和 linq2sql 作为数据访问 并拥有例如 ProductsRep 和 CustomersRep 在非常简单的场景中 数据库有两个表 产品 产品 ID 客户 ID 产品名称 日期 和顾客 客户 ID 名字 姓氏 每个存
  • 如何设置消息队列的所有者?

    System Messaging MessageQueue 类不提供设置队列所有权的方法 如何以编程方式设置 MSMQ 消息队列的所有者 简短的答案是 p invoke 对 windows api 函数的调用MQSetQueueSecuri
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不

随机推荐

  • 使用 Javascript/JQuery/Rails 3 动态添加新行

    我正在构建一个时间表表单 其中包含一个日历 使用户能够选择指定的日期并搜索项目 我有这个功能 我基本上拥有的是这样的 一旦用户搜索他们的项目并按加号按钮 即指定的项目 在本例中是 Asda 用户然后单击加号图标 这将创建一个新行并将其放入
  • Android 上的多选 ListPreference

    关于在 Android 上实现多选 复选框 ListPreference 有什么想法吗 我必须扩展 ListPreference 吗 是否已经记录了任何类来执行此操作 Thanks 多选 ListPreference 现在从 API 级别
  • 在 Rails 中实现“无尽页面”的最佳方法?

    分页太烂了 用户应该能够永远向下滚动 在适当的时候自动拉入新内容 有一个体面的导轨铸造 http railscasts com episodes 114 endless page关于这一点 但 Ryan 承认他的解决方案在 IE 中不起作用
  • 无法访问 xamarin 表单项目中的已处置对象异常

    我正在开发 Xamarin Forms 表单版本 2 3 4 231 项目 该应用程序在 iOS 中运行良好 而在 Android 中则随机崩溃 从崩溃日志来看 这似乎是内部崩溃 但我不知道从哪里开始 我知道应用程序中没有足够的信息 但有人
  • 我可以获取视图中当前控制器的名称吗?

    有没有办法从视图中找出当前控制器是什么 举个例子说明为什么我想知道这一点 如果多个控制器共享相同的布局 我可能在布局 ERB 文件中包含一部分 我想在其中突出显示基于控制器的当前页面的菜单项 也许这是一个糟糕的方法 如果是这样 更优选的方法
  • Cloud Firestore Swift:如何删除文档查询

    我想删除我的用户名集合中包含 UID 字段作为当前用户 ID 的所有文档 到目前为止 这是我的代码 let uid Auth auth currentUser uid db collection Usernames whereField U
  • 如何在 Sphinx 文档中将成员注释为抽象?

    以下两个属性定义在 Sphinx 中显示完全相同autodocHTML 输出 property def concrete self This is the concrete docstring pass abstractproperty d
  • cURL NTLM 代理授权

    我已经使用curl有一段时间了 它工作正常 但是使用用户 域 用户名 来验证curl的代理无法请求授权 授权方式为NTLM 该代码位于批处理文件中 Code curl proxy ntlm proxy user proxy PROXY UR
  • 在定义函数之前调用函数(前向引用扩展了变量的定义)

    考虑这个基本的 Scala 示例代码 object Test def main args Array String inner var x Int 5 def inner println x x 尝试编译它会产生以下错误消息 test sc
  • Access 中的 ConcatRelated(),使用两个键

    我找到了 ConcatRelated 函数 http allenbrowne com func concat html 它似乎做了我想要的事情 但我需要输入两个键而不是一个 我的数据如下所示 Chain Store Warehouse Wa
  • 从相机捕获的iphone图像自动旋转Swift

    通过编程方式 我在应用程序中从相机捕获了图像 它已经很好地获取了 但是当我转移到另一个时 查看并忽略那个视图 当时我的图像我想旋转为风景 我用相机拍摄了图像 当我从照片库获取图像时 没有发现问题 下图是我的原图 截屏 https i sta
  • 如何将数据从一个 BigTable 表复制到另一个 BigTable 表

    我正在尝试将数据从一个 Bigtable 表复制到另一个 Bigtable 表 但没有找到任何直接的方法来执行此操作 可以选择将数据从 Bigtable 表复制到 Google Storage 然后从存储文件复制回 Bigtable 但这需
  • API方法排序:Swagger版本3.0.2

    我在用招摇版本3 0 2 http swagger io swagger ui 我也关注了这个答案 https stackoverflow com a 32345035 3006390但对方法顺序没有影响 window onload fun
  • 在 Spark 数据框中创建 StructType 的空列

    我需要将 StructType 的空列添加到现有的 DataFrame 中 尝试以下 df df withColumn features typedLit StructType Nil And df df withColumn featur
  • 对表单集中的每个表单进行重复查询

    在我的 Django 应用程序中 我的用户可以拥有多个职位 即 Position 模型有 User 模型的外键 通过使用 djangomodelformset factory我输出与当前登录用户关联的所有位置 如下所示 视图 py clas
  • 单步执行属性/函数 (F11) 无法按预期工作

    In Visual Studio 2010 the Step Into Property Function F11 doesn t work as expected 它不会进入属性设置器或获取器 我将解决方案转换为Visual Studio
  • 如何在 React App 中嵌入 Google 自定义搜索?

    我需要在 React 应用程序中嵌入 JS 小部件 有办法做到吗 JS 小部件是 Google 自定义搜索 function var cx 111 xxx var gcse document createElement script gcs
  • 在开发与生产版本中自动更改 Vite 代理位置?

    在我正在开发的单页应用程序中 我正在使用 Vite 并在我的vite config ts文件我有以下代理 proxy v1 target https 127 0 0 1 8080 changeOrigin true secure false
  • updatepanel中异步回发后如何在客户端推迟更新

    我有一个旧系统 它使用UpdatePanelsASP NET 的 之后postback完成后 我们知道里面UpdatePanel已更新 我可以在客户端以某种方式延迟此更新吗 那可能吗 所以就像 当postback启动后 我设置了一个java
  • MSMQ 与临时表转储

    我知道这个问题之前已经被问过 但环顾四周 我还是拿不定主意该走哪条路 以下是我的情况 希望对你有帮助 我们将提供一系列网络服务 数百个移动应用程序将按计划访问这些服务 这些服务将在设备上提供数据 并将新信息发送到设备并从设备返回 从设备返回