基于分布式 JMS 的日志记录.. 表现平平?

2024-01-01

在我们精美的 ESB 中,每个请求的日志记录都是通过基于 JMS 日志记录的通用基础设施完成的。简而言之,发生的事情如下:

  1. 服务获取请求服务
  2. 在 LogData 中准备一些数据
  3. 对象服务调用数据库
  4. LogData 对象中捕获数据库交互所花费的时间
  5. 服务已准备好发送响应
  6. LogData 对象被发送到消息传递目的地
  7. 服务发送响应

非常玫瑰色!对于纸质建筑师来说是的。 这是实际的问题: JMS 服务提供者有时会由于系统级错误或软件崩溃而变得不可用。然后,服务在必须建立 JMS 连接以发送 LogData 对象的步骤(步骤 6)处等待。导致响应延迟,从而导致性能和用户体验不佳。

所以这就是很多开发者网站所吹捧的“使用JMS进行分布式日志记录”的最大缺点。另请注意,LogData 的存在是一种关键的非功能性需求。这意味着消息以持久模式发送,导致需要等待,直到 JMS 提供者确认收到发送者(本例中的服务)消息 - 这应该归咎于什么呢?设计不成熟?有没有实施类似的成功案例?


同步地在 db/jms/socket/etc 中进行任何日志记录都会带来很多问题。

通过登录内存和异步来实现它。转储到 file/jms(取决于 JMS 是否可用)。单个后台线程应该可以满足您的需要。有同步。日志记录可能会在应用程序的完全意外且无害的部分造成很多麻烦。

我想不出任何可能的同步成功案例。记录。

编辑。最好使用 ConcurrentLinkedQueue 之类的来保留 LogData (我的意思是避免任何阻塞,如果可能的话提高性能/吞吐量)

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

基于分布式 JMS 的日志记录.. 表现平平? 的相关文章

  • 无法在类对象的 ArrayList 中存储值。 (代码已编辑)

    这基本上是一个 Java 代码转换器 它涉及一个 GUI 让用户输入类类型 名称和方法 为了存储值 我创建了一个类VirtualClass与ArrayList
  • 使用 Java 在 WebDriver 中按 Ctrl+F5 刷新浏览器

    我已经使用 java 刷新了 WebDriver 中的浏览器 代码如下 driver navigate refresh 如何使用 Java 在 WebDriver 中按 Ctrl F5 来做到这一点 我认为您可以使用 WebDriver 和
  • URL.setURLStreamHandlerFactory

    我正在使用带有嵌入式 Jetty 的可执行 jar 开发一个 Web 应用程序 我的jar包含一个依赖jar jar in jar 我参考了JarRsrcLoader and RsrcURLStreamHandlerFactory由 Ecl
  • 如何在远程 WebSphere 上进行 JNDI 查找期间解决 sun/io/MalformedInputException

    我使用 WebSphere 8 5 来托管我的应用程序 并在应用程序服务器上配置了一些 JDBC 资源 我还使用瘦客户端运行时库开发了一个客户端应用程序 当按以下方式执行 JNDI 查找时 env put Context INITIAL C
  • Java 正则表达式 - 字母数字,最多一个连字符,句点或下划线,七个字符长

    我是 Java 正则表达式工具的新手 尽管它们潜力巨大 但我很难完成这项任务 我想编写一个正则表达式来验证遵循以下语法的输入字符串 小写字母和数字的任意组合 仅一个下划线 一个破折号或一个句号 无其他特殊字符 最小长度为 5 我想出了以下解
  • RMI 中的引用传递问题? [复制]

    这个问题在这里已经有答案了 有人可以告诉我我错在哪里 为什么这个 RMI 聊天应用程序不起作用 目标是通过远程对象或序列化对象实现客户端 服务器和逻辑之间的解耦 import javax swing import java awt even
  • 请参阅 Java EE eclipse 调试中的 POST 参数

    我在调试 Java EE 方面没有经验 我更像是一个 javascript 人 我需要查看哪些 HTTP POST 参数到达服务器端 我在表单将其操作指向的 jsp 文件中放置了一个断点 现在我在调试变量窗口中找不到 POST 内容 他们在
  • 正则表达式获取字符串中的第一个数字和其他字符

    我是正则表达式的新手 想知道如何才能只获取字符串中的第一个数字 例如100 2011 10 20 14 28 55 在这种情况下 我希望它返回100 但该数字也可以更短或更长 我在想类似的事情 0 9 但它单独获取每个数字 100 2001
  • 是否有任何API可以将Microsoft Exchange服务器与Java应用程序集成以进行任务同步?

    我正在尝试将 Java Web 应用程序与 Microsoft Exchange 服务器集成以实现双向日历 即任务 同步 是否有用于此集成的 Java 开源 商业 API 谢谢 文卡特 看一眼j 交易所 http sourceforge n
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • 如何导入 org.apache.commons.lang3.ArrayUtils;进入 Eclipse [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我如何导入 org apache commons lang3 ArrayUtils 将库添加到 Ecl
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某
  • Heroku Rails 应用程序级别不记录日志

    我在 Heroku 上有一个 Rails 应用程序 它没有在应用程序级别进行日志记录 当前版本 红宝石1 9 3 导轨3 1 3 在 config environment development rb 中有以下几行 config logge
  • 异步迭代器

    我有以下代码 while slowIterator hasNext performLengthTask slowIterator next 由于迭代器和任务都很慢 因此将它们放入单独的线程中是有意义的 这是对迭代器包装器的快速而肮脏的尝试
  • 发生错误。请参阅日志文件 - eclipse juno

    每当我启动 Eclipse Juno 时 都会出现错误 发生错误 请查看日志文件 C Program Files eclipse configuration 1362989254411 log 有的网站说卸载jdk重新安装 我这样做了 但没
  • Java:java.util.ConcurrentModificationException

    我正在制作 2D 目前正在研究用子弹射击 子弹是一个单独的类 所有项目符号都存储在称为项目符号的数组列表中 当它超出屏幕一侧 Exception in thread main java util ConcurrentModification
  • 了解 Spark 中的 DAG

    问题是我有以下 DAG 我认为当需要洗牌时 火花将工作划分为不同的阶段 考虑阶段 0 和阶段 1 有些操作不需要洗牌 那么为什么 Spark 将它们分成不同的阶段呢 我认为跨分区的实际数据移动应该发生在第 2 阶段 因为这里我们需要cogr
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • Java:使用 Graph API 在线更新 Sharepoint 上的 docx 文件

    我在使用 Java 在线更新 Sharepoint 上的 docx 文件时遇到问题 首先 我检查了构建 PUT 请求的 URL 此处 并使用此请求 PUT drives drive id items item id content 我首先使
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个

随机推荐

  • 我可以使用哪些 Solr 分词器和过滤器来进行强大的常规站点搜索?

    我想确保搜索 比如说 I B M 可以通过搜索找到ibm 我还想确保Dismemberment Plan可以通过搜索找到dismember 使用 Solr 我可以在分析和查询时使用什么标记器和过滤器来允许两种结果 对于 IBM gt ibm
  • R、ggplot - 共享相同 y 轴但具有不同 x 轴刻度的图表

    Context 我有一些数据集 变量 我想绘制它们 但我想以紧凑的方式做到这一点 为此 我希望它们共享相同的 y 轴但不同的 x 轴 并且由于分布不同 我希望其中一个 x 轴进行对数缩放 另一个进行线性缩放 Example 假设我有一个长尾
  • 在展会上与 React Native 立即通话

    我正在尝试在没有中间件对话框的情况下立即发起电话呼叫 我用过Linking openUrl 但它不起作用 react native immediate phone call 可以做到这一点 但它需要链接 这是不可能的expo 我能做些什么
  • 在 Visual Studio 2019 中更改 C# 版本

    我正在使用 Visual Studio 2019 我正在尝试更改我的 C 版本 我这样做的原因是我使用的构建服务器使用旧版本的 VS MSBuild 来构建和部署代码 这是我无法控制的 因此我需要使用 C 5 在 Visual Studio
  • 在 Pandas 中使用窗口进行动态离群值检测

    我想实现离群值检测 它将使用一个窗口来检查下一个元素是否是离群值 假设我们在 pd Series 上使用长度为 3 的窗口 如下所示 0 1 2 3 4 我会计算 0 1 2 上的中位数和疯狂值 或平均值和标准差 并检查 3 是否为异常值
  • 为什么非聚集索引扫描比聚集索引扫描更快?

    据我所知 堆表是没有聚集索引的表 没有物理顺序 我有一个包含 120k 行的堆表 扫描 我正在使用此选择 SELECT id FROM scan 如果我为 id 列创建非聚集索引 我得到223 物理读取 如果我删除非聚集索引并更改表以使 i
  • JSF 自定义复合组件与自定义经典组件之间有什么区别

    我想构建一个自定义 JSF 组件 现在我读了一些oracle的文档并看到了一些代码示例 问题是我有点困惑 似乎有两种方法可以使用 JSF 2 0 构建自定义组件 据我了解 自 JSF 2 0 以来 我可以使用这些复合组件来构建我自己的组件
  • OpenGL 中的帧缓冲区对象和像素缓冲区对象有什么区别?

    FBO 和 PBO 有什么区别 我应该使用哪一个来进行离屏渲染 FBO 和 PBO 有什么区别 更好的问题是它们有何相似之处 他们唯一相似的就是他们names A 帧缓冲对象 http www opengl org wiki Framebu
  • vim自动跳到下一行

    vim 中的一个令人沮丧的行为是 当我向右或向左移动光标 分别为 l 或 h 并且我位于行的末尾或开头时 我的光标不会移动到下一行的第一列或上一行的最后一列 有办法改变这种行为吗 您可以使用whichwrap设置使h and l环绕各行的开
  • 使用带有依赖项的 useEffect hook 时何时触发清理函数?

    我正在使用 useEffect 来显示 UI 加载 但仅在 250 毫秒后 它有效 但我真的不明白为什么 特别是 useEffect 如何以及何时调用返回的函数 清除超时 嗯 我不确定这是否完美 有时应该出现 正在加载 消息 但事实并非如此
  • 当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

    如果 MERGE 语句中有多个 WHEN MATCHED 语句 如果它们为真 它们是否都会执行 我的例子 DECLARE X bit NULL skipping the MERGE statement straight to WHEN MA
  • 分析 Ruby 程序调用的 C 共享库

    我有一个用Ruby和C编写的程序 C部分是一个共享库 它是Ruby程序的扩展 我想使用 gprof 分析我编写的 C 共享库 我像这样编译共享库 gcc I I usr lib ruby 1 8 i486 linux I usr lib r
  • 弱引用的好处

    有人可以解释一下 C 中不同类型引用的主要好处吗 弱引用 软参考 虚拟引用 强有力的参考 我们有一个消耗大量内存的应用程序 我们正在尝试确定这是否是一个需要关注的领域 我相信软引用和幻像引用来自 Java 长弱引用 将 true 传递给 C
  • python中是否可以同时运行多个asyncio?

    根据我得到的解决方案 在 python 中使用 asyncio 运行多个套接字 https stackoverflow com questions 62571622 running multiple sockets using asynci
  • 将自定义表单参数传递给表单集

    我定义了以下表格 class MyForm ModelForm def init self readOnly False args kwargs super MyForm self init args kwrds if readOnly D
  • mod_rewrite 传递变量

    我有以下 mod rewrite 规则 RewriteRule search php action procedure procedureName 1 这可以很好地将 blabla 之类的内容重定向到 search php action p
  • 就地应用于满足条件的 pandas 数据框的列

    考虑以下 pandas 数据框 df pd DataFrame t 1 2 3 x1 4 5 6 x2 7 8 9 gt gt gt print df t x1 x2 0 1 4 7 1 2 5 8 2 3 6 9 我想对名称包含字符 x
  • iOS 13 对 UISearchBar 色调的更改,无法达到相同的结果

    我一整天都在尝试 试图弄清楚如何让我的搜索栏在 iOS13 中显示与 iOS 12 11 中显示的相同 所以添加搜索栏的方式就是简单的新建一个UISearchController var searchController new UISea
  • 什么时候使用 Java 的 @Override 注解?为什么?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 使用 Java 的最佳实践是什么 Override注释以及为什么 用以下标记来标记每个被重写的
  • 基于分布式 JMS 的日志记录.. 表现平平?

    在我们精美的 ESB 中 每个请求的日志记录都是通过基于 JMS 日志记录的通用基础设施完成的 简而言之 发生的事情如下 服务获取请求服务 在 LogData 中准备一些数据 对象服务调用数据库 LogData 对象中捕获数据库交互所花费的