ActiveMQ 5.15.4
上下文:我正在使用的生产者发布到许多不同的队列。
我尝试过的事情:
1。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'gui.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_main_window(object):
def setupUi(self, main_window):
main_window.setObjectName("main_window")
main_window.resize(971, 503)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(main_window.sizePolicy().hasHeightForWidth())
main_window.setSizePolicy(sizePolicy)
main_window.setMinimumSize(QtCore.QSize(971, 503))
main_window.setMaximumSize(QtCore.QSize(971, 503))
main_window.setBaseSize(QtCore.QSize(971, 503))
main_window.setWindowOpacity(0.0)
self.line = QtWidgets.QFrame(main_window)
self.line.setGeometry(QtCore.QRect(10, 410, 951, 20))
self.line.setFrameShape(QtWidgets.QFrame.HLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.groupbox_frame = QtWidgets.QGroupBox(main_window)
self.groupbox_frame.setGeometry(QtCore.QRect(10, 350, 465, 61))
self.groupbox_frame.setObjectName("groupbox_frame")
self.slider_video_frames = QtWidgets.QSlider(self.groupbox_frame)
self.slider_video_frames.setGeometry(QtCore.QRect(14, 20, 431, 20))
self.slider_video_frames.setMaximum(255)
self.slider_video_frames.setOrientation(QtCore.Qt.Horizontal)
self.slider_video_frames.setObjectName("slider_video_frames")
self.label_frame_min = QtWidgets.QLabel(self.groupbox_frame)
self.label_frame_min.setGeometry(QtCore.QRect(16, 40, 49, 15))
self.label_frame_min.setObjectName("label_frame_min")
self.label_frame_current = QtWidgets.QLabel(self.groupbox_frame)
self.label_frame_current.setGeometry(QtCore.QRect(200, 40, 49, 15))
self.label_frame_current.setText("")
self.label_frame_current.setAlignment(QtCore.Qt.AlignCenter)
self.label_frame_current.setObjectName("label_frame_current")
self.label_frame_max = QtWidgets.QLabel(self.groupbox_frame)
self.label_frame_max.setGeometry(QtCore.QRect(400, 40, 49, 15))
self.label_frame_max.setText("")
self.label_frame_max.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.label_frame_max.setObjectName("label_frame_max")
self.groupbox_settings = QtWidgets.QGroupBox(main_window)
self.groupbox_settings.setGeometry(QtCore.QRect(10, 428, 951, 71))
self.groupbox_settings.setObjectName("groupbox_settings")
self.button_load_avi = QtWidgets.QPushButton(self.groupbox_settings)
self.button_load_avi.setGeometry(QtCore.QRect(10, 30, 84, 31))
self.button_load_avi.setObjectName("button_load_avi")
self.button_save_marks = QtWidgets.QPushButton(self.groupbox_settings)
self.button_save_marks.setGeometry(QtCore.QRect(202, 30, 84, 31))
self.button_save_marks.setObjectName("button_save_marks")
self.button_create_plot = QtWidgets.QPushButton(self.groupbox_settings)
self.button_create_plot.setGeometry(QtCore.QRect(582, 30, 84, 31))
self.button_create_plot.setObjectName("button_create_plot")
self.button_set_marks = QtWidgets.QPushButton(self.groupbox_settings)
self.button_set_marks.setGeometry(QtCore.QRect(112, 30, 84, 31))
self.button_set_marks.setObjectName("button_set_marks")
self.line_3 = QtWidgets.QFrame(self.groupbox_settings)
self.line_3.setGeometry(QtCore.QRect(470, 30, 20, 31))
self.line_3.setFrameShape(QtWidgets.QFrame.VLine)
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_3.setObjectName("line_3")
self.button_analyse = QtWidgets.QPushButton(self.groupbox_settings)
self.button_analyse.setGeometry(QtCore.QRect(491, 30, 84, 31))
self.button_analyse.setObjectName("button_analyse")
self.line_2 = QtWidgets.QFrame(self.groupbox_settings)
self.line_2.setGeometry(QtCore.QRect(92, 30, 20, 31))
self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_2.setObjectName("line_2")
self.button_reset_marks = QtWidgets.QPushButton(self.groupbox_settings)
self.button_reset_marks.setGeometry(QtCore.QRect(292, 30, 84, 31))
self.button_reset_marks.setObjectName("button_reset_marks")
self.button_quit = QtWidgets.QPushButton(self.groupbox_settings)
self.button_quit.setGeometry(QtCore.QRect(860, 30, 81, 31))
self.button_quit.setObjectName("button_quit")
self.line_4 = QtWidgets.QFrame(self.groupbox_settings)
self.line_4.setGeometry(QtCore.QRect(840, 30, 20, 31))
self.line_4.setFrameShape(QtWidgets.QFrame.VLine)
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_4.setObjectName("line_4")
self.line_5 = QtWidgets.QFrame(main_window)
self.line_5.setGeometry(QtCore.QRect(482, 10, 16, 401))
self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line_5.setObjectName("line_5")
self.groupbox_threshold = QtWidgets.QGroupBox(main_window)
self.groupbox_threshold.setGeometry(QtCore.QRect(505, 350, 457, 61))
self.groupbox_threshold.setObjectName("groupbox_threshold")
self.slider_threshold_value = QtWidgets.QSlider(self.groupbox_threshold)
self.slider_threshold_value.setGeometry(QtCore.QRect(80, 23, 321, 20))
self.slider_threshold_value.setMaximum(255)
self.slider_threshold_value.setOrientation(QtCore.Qt.Horizontal)
self.slider_threshold_value.setObjectName("slider_threshold_value")
self.label_threshold_slider_name = QtWidgets.QLabel(self.groupbox_threshold)
self.label_threshold_slider_name.setGeometry(QtCore.QRect(4, 24, 71, 16))
self.label_threshold_slider_name.setObjectName("label_threshold_slider_name")
self.label_threshold_value = QtWidgets.QLabel(self.groupbox_threshold)
self.label_threshold_value.setGeometry(QtCore.QRect(404, 25, 49, 15))
self.label_threshold_value.setText("")
self.label_threshold_value.setObjectName("label_threshold_value")
self.retranslateUi(main_window)
self.slider_video_frames.valueChanged['int'].connect(self.label_frame_current.setNum)
self.slider_threshold_value.valueChanged['int'].connect(self.label_threshold_value.setNum)
QtCore.QMetaObject.connectSlotsByName(main_window)
main_window.setTabOrder(self.slider_video_frames, self.slider_threshold_value)
main_window.setTabOrder(self.slider_threshold_value, self.button_load_avi)
main_window.setTabOrder(self.button_load_avi, self.button_set_marks)
main_window.setTabOrder(self.button_set_marks, self.button_save_marks)
main_window.setTabOrder(self.button_save_marks, self.button_reset_marks)
main_window.setTabOrder(self.button_reset_marks, self.button_analyse)
main_window.setTabOrder(self.button_analyse, self.button_create_plot)
main_window.setTabOrder(self.button_create_plot, self.button_quit)
def retranslateUi(self, main_window):
_translate = QtCore.QCoreApplication.translate
main_window.setWindowTitle(_translate("main_window", "Image Analysis"))
self.groupbox_frame.setTitle(_translate("main_window", "Frame Settings:"))
self.slider_video_frames.setToolTip(_translate("main_window", "Use this slider to go through all the frames."))
self.label_frame_min.setText(_translate("main_window", "0"))
self.groupbox_settings.setTitle(_translate("main_window", "Specific Frame adjustments:"))
self.button_load_avi.setText(_translate("main_window", "Load .avi"))
self.button_save_marks.setText(_translate("main_window", "Save marks"))
self.button_create_plot.setText(_translate("main_window", "Create Plot"))
self.button_set_marks.setText(_translate("main_window", "Set marks"))
self.button_analyse.setText(_translate("main_window", "Analyse Video"))
self.button_reset_marks.setText(_translate("main_window", "Reset Marks"))
self.button_quit.setText(_translate("main_window", "Quit"))
self.groupbox_threshold.setTitle(_translate("main_window", "How to process this frame:"))
self.slider_threshold_value.setToolTip(_translate("main_window", "Use this slider to go through all the frames."))
self.label_threshold_slider_name.setText(_translate("main_window", "Set threshold:"))
这可以正确地限制队列大小,但是会限制生产者,如here所述。这导致其他非问题性队列出现
2。
<policyEntry queue=">" producerFlowControl="true" memoryLimit="10 mb">
</policyEntry>
似乎并没有限制队列大小。
3。
我尝试使用 messageEvictionStrategy 和 pendingMessageLimitStrategy ,但它们似乎不适用于队列,仅适用于主题。
我还缺少其他可能的策略吗?
答案 0 :(得分:0)
您需要在消息上使用“生存时间”值来控制消息在队列中停留的时间,否则,代理将使用流控制阻止生产者,或者如果禁用消息,则将消息分页到磁盘。队列通常不用于固定大小的消息传递,因为队列上的假设是内容很重要,除非发件人通过TTL允许,否则不应丢弃。