草庐IT

Messaging

全部标签

java - 在 Java 中寻找简单的持久消息缓冲区

我正在寻找一个简单的持久缓冲区作为Java应用程序中JSON消息的临时存储。内存使用量应该相对恒定,而不取决于缓冲区中的消息数量。如果能够重播过去某个时间点的消息,那就太好了。删除旧消息应该是有效的。需要能够处理1m消息/小时。目前,我的应用程序使用本地RabbitMQ代理将消息铲到远程RabbitMQ代理。当远程代理关闭或不接受消息时,本地RabbitMQ代理的内存使用量随着队列长度的增加而增加,最终它停止接受消息。我想将其换成基于本地磁盘的缓冲区和一个将消息复制到远程RabbitMQ代理的线程。有人有什么想法吗?我看过Kafka,但它对我的用例来说似乎有点矫枉过正。MongoDB是

java - 使用 RabbitMQ 发送对象

我知道这个问题与以下问题重复usingrabbitmqtosendamessagenotstringbutstruct如果用第一种方式做到这一点firstway我有以下痕迹:java.io.EOFExceptionatjava.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2304)atjava.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2773)atjava.io.ObjectInpu

java - 使用 Java 将 SOAP 消息格式转换为 Socket 消息格式,反之亦然

我目前正在研究使用Java将SOAP消息格式转换为Socket消息格式,反之亦然。我需要它来重用读取套接字格式消息的旧系统以连接到发送和接收SOAP消息格式的网站。我应该怎么做?我应该考虑文本处理吗?SOAP示例套接字socketSOAP<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><Interfacexmlns="http://____________"Version="1.0"Code="20"Txn="123"CD="456"><InfoBirthDate="1983-03-27"Code="1234"T

Java JMS 消息传递

我有一个通过qpid消息发送消息到服务器和服务器接收消息的工作示例。这是发送到服务器的简单helloworld:http://pastebin.com/M7mSECJn这是接收请求并发送响应的服务器(当前客户端没有收到响应):http://pastebin.com/2mEeuzrV这是我的属性文件:http://pastebin.com/TLEFdpXG它们都工作得很好,我可以通过QpidJMX管理控制台看到qpid队列中的消息。这些例子是从https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/client/example下载的(可

java - 如何实现多消费者多队列的消费者-生产者

假设有1个生产者P和2个消费者C1和C2。并且有2个队列Q1和Q2,都具有特定的容量。P会生产元素,交替放入Q1和Q2。元素是为特定消费者生产的,不能被其他消费者消费。我如何在Java中实现以下内容:在我启动3个线程后,如果Q1为空,线程C1将被阻塞,直到当Q1中有内容时通知它。Q2也是。并且当Q1和Q2都满时P会被阻塞,直到当Q1或Q2未满时通知它。我正在考虑使用BlockingQueue,它会在队列为空时阻塞消费者。但问题是当其中一个队列已满时,生产者将被阻塞。Java中有没有什么数据结构可以用来解决这个问题?更新我自己有一个解决方案,但我不确定它是否有效。我们仍然可以有2个Blo

java - RabbitMQ:如何指定要发布到的队列?

RabbitMQ的Channel#basicConsume方法为我们提供了以下参数:channel.basicConsume(queueName,autoAck,consumerTag,noLocal,exclusive,arguments,callback);让我们能够准确地告诉RabbitMQ我们要从哪个队列中消费。但是Channel#basicPublish没有这样的等价物:channel.basicPublish(exchangeName,routingKey,mandatory,immediateFlag,basicProperties,messageAsBytes);为什么

Java NIO 选择器可能的最小延迟

我正在通过环回(127.0.0.1)在Linux上使用优化的JavaNIO选择器进行一些基准测试。我的测试很简单:一个程序将一个UDP数据包发送到另一个程序,另一个程序将其回显给发送者并计算往返时间。下一个数据包仅在前一个数据包被确认(返回时)时才发送。在执行基准测试之前,会使用几百万条消息进行适当的预热。消息有13个字节(不包括UDPheader)。对于往返时间,我得到以下结果:最短时间:13微秒平均时间:19微秒75%百分位数:18,567纳米90%百分位数:18,789纳米99%百分位数:19,184纳米99.9%百分位数:19,264纳米99.99%百分位数:19,310纳米9

java - Java 中的轻量级消息传递(异步调用)

我正在寻找Java中的轻量级消息传递框架。我的任务是以SEDA的方式处理事件:我知道处理的某些阶段可以快速完成,而其他阶段则不能,我想解耦这些处理阶段。假设我有组件A和B,处理引擎(可以是这个容器或其他任何东西)调用组件A,组件A又调用组件B。我不关心组件B的执行时间是否为2秒,但我关心例如,注意组件A的执行时间是否低于50毫秒。因此,组件A向B提交消息,B将在所需时间处理该消息似乎是最合理的。我知道不同的JMS实现和ApacheActiveMQ:它们对于这个来说太重量级了。我搜索了一些轻量级消息传递(具有非常基本的功能,例如消息序列化和最简单的路由)但无济于事。您对本期有什么建议吗?

Open Source Instant Messaging (IM) Project OpenIM Source Code

DeployingOpenIMinvolvesmultiplecomponentsandsupportsvariousmethods,includingsourcecode,Docker,andKubernetes.Thisrequiresensuringcompatibilitybetweendifferentdeploymentmethodswhileeffectivelymanagingdifferencesbetweenversions.Indeed,thesearecomplexissuesinvolvingin-depthtechnicaldetailsandprecisesyst

c++ - 如果目标应用程序在 C++ 中崩溃,则无法使用 LVM_GETITEMTEXT

我正在尝试从另一个应用程序的SysListView32类(根据Spy++)捕获数据。向此句柄发送LVM_GETITEMCOUNT消息总是会返回正确数量的项目。有一个子窗口是SysHeader32,它可能包含标题。当我尝试向目标应用程序发送LVM_GETITEMTEXT消息时,它崩溃了。此消息的相关代码如下:LPTSTRlpText;LVITEM*lvItem;lvItem=newLVITEM;lvItem->iSubItem=0;lvItem->cchTextMax=255;lvItem->pszText=lpText;//SysListViewHandleistheHWNDtothe