据我从文档中所知,ZeroMQ套接字不应该从不同的线程中使用(例如,从不同的线程中读取/写入)。
这反过来又阻止了我在默认调度程序上运行的Akka执行元中使用ZMQ套接字(无法保证哪个线程将执行我的receive
方法)。
使用PinnedDispatcher是否允许我在Actor中安全地使用这样的套接字,前提是我注意不要阻塞(至少不要阻塞太长的时间)?
通过:https://doc.akka.io/docs/akka/2.5/dispatchers.html#types-of-dispatchers
我使用的是JeroMQ 0.4.0和Akka 2.5。我意识到Akka曾经有一个ZeroMQ扩展,但似乎大部分都被放弃了。
ZeroMQ,从最早的版本(您指的是API版本2.1,而在2018/Q2+发布并可用的API4.2+版本)开始,就在一个共享的值集下构建。Zen-of-Zero,它努力使事情尽可能高效地发生,以一种资源友好的方式发生,并且只获得一个合理数量的延迟(最好没有)。
然而,这并不意味着可以不计成本地实现这一目标,对吗?
如果以适当的方式使用适当的工具,没有人会受到伤害,对吗?
干净的“无共享”ZeroMQ设计要比尝试处理越来越多的设计工件更安全、更快速(如果您的领域需要质量保证过程,那么在验收预定之前就交付设计验证和验证证明就越好--试着想象一下测试、质量保证/验证证明的成本,只是希望具有确定性、非阻塞性、无错误和健壮/弹性的现场操作。)
注意:
ZeroMQsocket()
-实例不是TCP-Socket-as-you-know-it。最好在不到五秒钟的时间内阅读ZeroMQ层次结构的主要概念差异,或者在这里阅读其他帖子和讨论。
context()
实例在其自己的控制域下具有自己的I/O线程池,并且在相应的context
的socket()
实例允许的与相应的context
的(组)I/O线程的关联之间具有类似“DMA”的映射器,因此关于“钉扎”的全局视图可能不会影响预期的资源映射首选项。
#####################################
# Akka ZeroMQ Reference Config File #
#####################################
# This is the reference config file that contains all the default settings.
# Make your edits/overrides in your application.conf.
akka {
zeromq {
# The default timeout for a poll on the actual zeromq socket.
poll-timeout = 100ms
# Timeout for creating a new socket
new-socket-timeout = 5s
socket-dispatcher {
# A zeromq socket needs to be pinned to the thread that created it.
# Changing this value results in weird errors and race conditions within
# zeromq
executor = thread-pool-executor
type = "PinnedDispatcher"
thread-pool-executor.allow-core-timeout = off
}
}
}
案例1: 使用时: 获取异常: 看到的超文本标记语言套件异常:java.lang.RuntimeException:java.lang.RuntimeException: GoogleChrome在路径中找不到!请将包含“chrome.exe”或“google-chrome”或“GoogleChrome”的目录添加到您的PATH环境可用,或显式指定GoogleChrome路径,如下所示:*goog
问题内容: 在Java中,可以创建套接字服务器和套接字客户端,是否可以运行套接字服务器的实例以及从同一台计算机上的套接字服务器接收数据的套接字/服务器客户端? 例如,套接字服务器在端口60010上运行,套接字客户端在通过套接字连接到该端口的同一台计算机上运行,还是我需要一台新计算机并将其添加到网络中?如果它在TCP / IP层上运行时具有唯一的IP地址和端口号。 问题答案: 这是一个简单的可运
问题内容: 有人可以帮我实现以下服务器和客户端吗? 服务器: 所有服务器所做的就是从套接字扫描命令并将其通过套接字发送给客户端。然后扫描客户端响应并将其输出到。 客户端: 本质上,客户端接收服务器扫描的命令,使用执行该命令,并逐行发送命令行的内容,直到。 问题是代码在第一个命令之后突然停止工作。命令的传输和命令的输出是令人满意的,但是在打印第一个命令的输出后,程序只是停止工作。我认为是有问题,但是
问题内容: 我环顾了一阵子,我很惊讶地发现Gunicorn是否在Windows上运行,没有任何信息。有谁知道是这种情况,如果是,我在哪里可以找到有关它的文档? 问题答案: Gunicorn用于UNIX环境,并且与Windows不兼容。另外,有关更多信息,请参阅它的文档。
我们有一个gitlab-ci运行器,它托管在服务器a下运行的docker容器上。现在,我们希望将gitlab-ci运行器配置为一个容器,以便在主机上执行命令。 我们尝试使用下面的命令将运行器注册为“shell”执行器,但它仍然试图只访问gitlab-ci运行器容器中的shell,而不是主机服务器shell。 sudo gitlab-runner注册 --非交互式 --URL“https://git
问题内容: 我正在尝试运行从未知来源的C代码编译的程序。我想确保该程序无论如何都不会损害我的系统。例如,该程序可能在源代码中有类似东西,除非对代码进行彻底检查,否则无法检测到。 我想到了以下两种方法 在VMWare之类的VM中运行它 在Linux上构建Windows exe并在wine上运行 两者都不是很好的解决方案,我无法实现它们的自动化。并且在1的情况下可能会损坏VM。 任何帮助,将不胜感激。