在备份期间,我想暂停HornetQ中的所有JMS队列,以获取磁盘的快照。在jboss-cli
我打电话:
connect
/subsystem=messaging/hornetq-server=default/jms-queue=%queueName:pause
但队列没有暂停。如何暂停所有JMS作业?
UPD
重现的步骤:
root@debian:/opt/jboss/bin# ./jboss-cli.sh
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /] connect
[standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/jms-queue=AIIndex:pause
{
"outcome" => "success",
"result" => undefined
}
[standalone@localhost:9999 /]
但是当我打电话时
[standalone@localhost:9999 /] /subsystem=messaging/hornetq-server=default/jms-queue=AIIndex:count-messages
{
"outcome" => "success",
"result" => 128L
}
因此,每当我致电/subsystem=messaging/hornetq-server=default/jms-queue=AIIndex:count-messages
时,它都会显示不同的值。
答案 0 :(得分:3)
我可以重现它:pause
只是禁用消息接收(接收器不会收到任何消息,并且没有错误消息)。但它仍然可以发送消息。我也没有在队列和子系统级别上找到任何其他操作。所以我只能确认它不能像预期的那样工作。
HornetQ内部使用journal。引用:
HornetQ日志仅附加可配置的文件大小,通过启用单个写入操作来提高性能。它由磁盘上的一组文件组成,这些文件最初预先创建为固定大小并填充填充。当执行服务器操作(添加消息,删除消息,更新消息等)时,操作的记录将附加到日志,直到日志文件已满,此时将使用下一个日志文件。
关于journal flush/sync另一个引用:
轴颈同步事务
如果为true,HornetQ会确保所有事务数据在事务边界(提交,准备和回滚)上刷新到磁盘。默认值为true。
轴颈同步非事务
如果为true,HornetQ会确保将非事务性消息数据(发送和确认)刷新到磁盘。默认值为true。
这看起来并不太糟糕,但我还没有确认可以备份.../data/messaging*/
目录。可能没有解决办法从“外部”获得一致的备份。
因此,我所知道的唯一可靠方法是使用active/passive setup:引用:
HornetQ允许成对的服务器作为实时 - 备份对链接在一起。在此版本中,每个实时服务器都有一个备份服务器。备份服务器仅由一个活动服务器拥有。在发生故障转移之前,备份服务器无法运行。
这种方法适用于“在JBoss内部”进行备份(虽然不是文件系统备份)。