This is an automated email from the ASF dual-hosted git repository.
brusdev pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis-console.git
The following commit(s) were added to refs/heads/main by this push:
new 83e1187 ARTEMIS-5548 - fix adding back the retry for dlq and expiry
83e1187 is described below
commit 83e1187abc6b062d66e44ac90744acadfd4e5289
Author: Andy Taylor <[email protected]>
AuthorDate: Fri Sep 12 16:05:02 2025 +0100
ARTEMIS-5548 - fix adding back the retry for dlq and expiry
---
.../artemis-console-plugin/src/artemis-service.ts | 5 ++
.../src/messages/MessagesTable.tsx | 64 ++++++++++++++++++++++
2 files changed, 69 insertions(+)
diff --git
a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts
b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts
index cef014b..08c653f 100644
---
a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts
+++
b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/artemis-service.ts
@@ -124,6 +124,7 @@ const DELETE_ADDRESS_SIG =
"deleteAddress(java.lang.String)";
const DELETE_MESSAGE_SIG = "removeMessage(long)";
const MOVE_MESSAGE_SIG = "moveMessage(long,java.lang.String)";
const COPY_MESSAGE_SIG = "copyMessage(long,java.lang.String)";
+const RETRY_MESSAGE_SIG = "retryMessage(long)";
const CREATE_QUEUE_SIG = "createQueue(java.lang.String,boolean)"
const CREATE_ADDRESS_SIG = "createAddress(java.lang.String,java.lang.String)"
const COUNT_MESSAGES_SIG = "countMessages()";
@@ -335,6 +336,10 @@ class ArtemisService {
return jolokiaService.execute(mbean, COPY_MESSAGE_SIG, [id,
targetQueue])
}
+ async retryMessage(id: number, address: string, routingType: string,
queue: string) {
+ const mbean = createQueueObjectName(await this.getBrokerObjectName(),
address, routingType, queue);
+ return jolokiaService.execute(mbean, RETRY_MESSAGE_SIG, [id])
+ }
async createQueue(queueConfiguration: string) {
return await jolokiaService.execute(await this.getBrokerObjectName(),
CREATE_QUEUE_SIG, [queueConfiguration, false]).then().catch() as string;
diff --git
a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/messages/MessagesTable.tsx
b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/messages/MessagesTable.tsx
index 12b2a39..d63739d 100644
---
a/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/messages/MessagesTable.tsx
+++
b/artemis-console-extension/artemis-extension/packages/artemis-console-plugin/src/messages/MessagesTable.tsx
@@ -75,6 +75,7 @@ export const MessagesTable:
React.FunctionComponent<MessageProps> = props => {
const [showDeleteMessagesModal, setShowDeleteMessagesModal] =
useState(false);
const [showMoveMessagesModal, setShowMoveMessagesModal] = useState(false);
const [showCopyMessagesModal, setShowCopyMessagesModal] = useState(false);
+ const [showRetryMessagesModal, setShowRetryMessagesModal] = useState(false);
const [showResendModal, setShowResendModal] = useState(false);
const [ resendMessage, setResendMessage] = useState<Message | undefined>();
@@ -213,6 +214,8 @@ export const MessagesTable:
React.FunctionComponent<MessageProps> = props => {
const doesCopyMessagemethodExist =
artemisService.doesMethodExist(brokerNode, props.queue, "copyMessage");
+ const isRetryQueue =
props.queue.match(artemisPreferencesService.loadArtemisPreferences().artemisDLQ)
||
props.queue.match(artemisPreferencesService.loadArtemisPreferences().artemisExpiryQueue);
+
if(!doesCopyMessagemethodExist) {
log.warn("Copy button method not available in this version of Artemis");
@@ -318,6 +321,35 @@ export const MessagesTable:
React.FunctionComponent<MessageProps> = props => {
setSelectedMessages([]);
}
+ const handleRetryMessages = () => {
+
+ const isRejected = <T,>(p: PromiseSettledResult<T>): p is
PromiseRejectedResult => p.status === 'rejected';
+ var results: Promise<unknown>[] = [];
+ for (let i = 0; i < selectedMessages.length; i++) {
+ var promise: Promise<unknown> =
artemisService.retryMessage(selectedMessages[i], props.address,
props.routingType, props.queue);
+ results.push(promise);
+ };
+ Promise.allSettled(results)
+ .then((results) => {
+ const rejectedReasons = results.filter(isRejected).map(p => p.reason);
+
+ if (rejectedReasons.length > 0) {
+ eventService.notify({
+ type: 'warning',
+ message: "not all messages retried: errors " +
rejectedReasons.toString(),
+ })
+ } else {
+ eventService.notify({
+ type: 'success',
+ message: "Messages Successfully Retried [" + selectedMessages +
"]",
+ })
+ }
+ });
+
+ setShowRetryMessagesModal(false);
+ setSelectedMessages([]);
+ }
+
return (
<React.Fragment>
<Toolbar id="toolbar">
@@ -350,6 +382,11 @@ export const MessagesTable:
React.FunctionComponent<MessageProps> = props => {
<ToolbarItem>
<Button onClick={() => setShowCopyMessagesModal(true)}
isDisabled={!doesCopyMessagemethodExist} >Copy</Button>
</ToolbarItem>
+ { isRetryQueue &&
+ <ToolbarItem>
+ <Button onClick={() =>
setShowRetryMessagesModal(true)}>Retry</Button>
+ </ToolbarItem>
+ }
<ToolbarItem>
<Button variant='link' onClick={handleColumnsModalToggle} >Manage
Columns</Button>
</ToolbarItem>
@@ -505,6 +542,33 @@ export const MessagesTable:
React.FunctionComponent<MessageProps> = props => {
<QueueSelectInput selectQueue={setSelectedTargetQueue}/>
</TextContent>
</Modal>
+ <Modal
+ aria-label='retry-messagse-modal'
+ variant={ModalVariant.medium}
+ isOpen={showRetryMessagesModal}
+ actions={[
+ <Button key="cancel" variant="secondary" onClick={() =>
setShowRetryMessagesModal(false)}>
+ Cancel
+ </Button>,
+ <Button key="copy" variant="primary" onClick={handleRetryMessages}>
+ Confirm
+ </Button>
+ ]}>
+ <TextContent>
+ <Text component="h2">
+ Confirm Retry Message(s)
+ </Text>
+ <Text component="p">
+ <Icon isInline status='warning'>
+ <ExclamationCircleIcon />
+ </Icon>
+ You are about to retry messages {selectedMessages.toString()}
+ </Text>
+ <Text component="p">
+ This operation cannot be undone so please be careful.
+ </Text>
+ </TextContent>
+ </Modal>
<Modal
title="Resend Message"
isOpen={showResendModal}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact