Cómo volver a enviar un mensaje de la cola de mensajes de JBoss 4.2.2 después de reintento caducado

StackOverflow https://stackoverflow.com/questions/890384

  •  23-08-2019
  •  | 
  •  

Pregunta

¿Hay una manera de volver a enviar mensajes caducados en una cola de mensajes de JBoss 4.2.2? La cuestión es que se excedieron en sus cantidades de reintento, pero ahora el problema es fijo, por lo que hay una manera de volver a enviarlos?

En JBoss 3 que eran simplemente archivos de texto que se podía mover. Ahora que se almacena en una base de datos, ¿cómo puede hacerlo?

¿Fue útil?

Solución 2

Esto es lo que terminé haciendo:

    Hashtable t = new Hashtable();
    t.put(Context.PROVIDER_URL, "localhost:1099");
    t.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    Context ctx = new InitialContext(t);
    Queue q = (Queue) ctx.lookup("/queue/DLQ");
    //----------------------------
    ConnectionFactory cf = (ConnectionFactory) ctx.lookup("/ConnectionFactory");
    Connection connection = cf.createConnection();
    Session session = connection.createSession(true, 0);
    //---------------------------------
    MessageConsumer consumer = session.createConsumer(q);
    connection.start();
    SpyObjectMessage m;

    Queue originialDestination = null;
//There can only be one in my case, but really you have to look it up every time.
    MessageProducer producer = null;
    while ((m = (SpyObjectMessage) consumer.receive(5000)) != null) {
        Object o = m.getObject();
        Date messageDate = new Date(m.getJMSTimestamp());
        String originalQueue = m.getStringProperty("JBOSS_ORIG_DESTINATION");
            if (originialDestination == null) {
                originialDestination = (Queue) ctx.lookup("/queue/" +
 originalQueue.substring(originalQueue.indexOf('.') + 1));
                producer = session.createProducer(originialDestination);
            }
            producer.send(session.createObjectMessage((Serializable) o));
      m.acknowledge();
    }
    //session.commit();    //Uncomment to make this real.
    connection.close();
    ctx.close();

Otros consejos

Tener un vistazo a Hermes JMS . Es una herramienta de código abierto para la navegación colas y temas JMS. Puede reproducir los mensajes que terminan en la cola no se pueden entregar del corredor.

Nota: Yo trabajo para CodeStreet

Nuestro 'ReplayService para JMS' producto está construido exactamente para este caso de uso:. Buscar y recuperar mensajes publicados anteriormente (entrega n-veces) - JMS es realmente diseñado para una entrega en 1 hora

Con ReplayService para JMS, podrá configurar una grabación de WebLogic para registrar todos los mensajes publicados en su tema o cola. A través de una interfaz gráfica de usuario basada en la Web, a continuación, puede buscar mensajes individuales (por subcadena, o XPath selector JMS) y, después, volver de nuevo al destino original JMS.

http://www.codestreet.com/marketdata/jms/jms_details.php para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top