GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Envio e recepção de mensagens via JMS

java
programação
Tags: #<Tag:0x00007f97267110f0> #<Tag:0x00007f9726710f38>

#1

Bom dia,

Alguém pode me ajudar? preciso desenvolver esse trabalho da faculdade…

‘‘o programa responsável pelo envio das mensagens deverá solicitar ao usuário dois
números (inteiros ou decimais), junto a um dos operadores aritméticos básicos (soma,
subtração, multiplicação e divisão). A mensagem (em formato texto) deverá ser
estruturada como segue: “primeiro_número||operador||segundo_número”;
as mensagens deverão ser enviadas para uma fila;
o programa responsável pela recepção das mensagens deverá decompor o texto
recebido, avaliar a expressão e exibir o resultado da operação;’’

Obrigado!


#2

e no que a gente pode te ajudar ?


#3

package teste_jms;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;

import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.QueueSession;
import javax.jms.QueueReceiver;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;

//Classe que consome mensagens a partir de uma fila.
public class Consumidor {

// Método principal.
public static void main(String args[]) throws Exception {
    
    // Propriedades para configuração do ambiente de execução.
    Properties ambiente = new Properties();
    ambiente.put(Context.INITIAL_CONTEXT_FACTORY,
            "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
    ambiente.put(Context.PROVIDER_URL, "tcp://localhost:61616");
    ambiente.put("queue.filaDeMensagens", "FilaDeMensagens");

    // Contexto inicial para o ambiente de execução.
    InitialContext contexto = new InitialContext(ambiente);

    // Procura pela fila de mensagens.
    Queue fila = (Queue)contexto.lookup("filaDeMensagens");

    // Procura pela "fábrica" de conexões às filas de mensagem.
    QueueConnectionFactory fabricaDeConexoes = (QueueConnectionFactory)contexto.lookup("QueueConnectionFactory");

    // Cria uma conexão à fila.
    QueueConnection conexao = fabricaDeConexoes.createQueueConnection();

    // Cria uma sessão de acesso à fila.
    QueueSession sessao = conexao.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);

    // Cria objeto que permite rcuperar mensagens a partir da fila.
    QueueReceiver consumidor = sessao.createReceiver(fila);

    // Inicia a conexão.
    conexao.start();

    // Recebe uma mensagem.
    TextMessage mensagem = (TextMessage)consumidor.receive();

    // Exibe a mensagem recebida.
    System.out.println("Mensagem recebida: " + mensagem.getText());

    // Fecha a conexão.
    conexao.close();
}

}

package teste_jms;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;

import org.joda.time.Instant;

import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.management.Query;
import javax.jms.QueueSender;
import javax.jms.DeliveryMode;
import javax.jms.QueueSession;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;

// Classe que produz mensagens e as envia para uma fila.
public class Produtor {

// Método principal.
public static void main(String[] args) throws Exception {
    
    // Propriedades para configuração do ambiente de execução.
    Properties ambiente = new Properties();
    ambiente.put(Context.INITIAL_CONTEXT_FACTORY,
            "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
    ambiente.put(Context.PROVIDER_URL, "tcp://localhost:61616");
    ambiente.put("queue.filaDeMensagens", "FilaDeMensagens");
    
    // Contexto inicial para o ambiente de execução.
    InitialContext contexto = new InitialContext(ambiente);

    // Procura pela fila de mensagens.
    Query fila = (Queue)contexto.lookup("filaDeMensagens");
    
    // Procura pela "fábrica" de conexões às filas de mensagem.
    QueueConnectionFactory fabricaDeConexoes = (QueueConnectionFactory)contexto.lookup("QueueConnectionFactory");
    
    // Cria uma conexão à fila.
    QueueConnection conexao = fabricaDeConexoes.createQueueConnection();

    // Cria uma sessão de acesso à fila.
    QueueSession sessao = conexao.createQueueSession(false, Session.DUPS_OK_ACKNOWLEDGE);

    // Cria objeto que permite enviar mensagens à fila.
    QueueSender produtor = sessao.createSender(fila);
    produtor.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    // Cria mensagem com a data/hora atual.
    TextMessage mensagem = sessao.createTextMessage(Instant.now().toString());

    // Envia a mensagem.
    produtor.send(mensagem);

    System.out.println("Mensagem enviada: " + mensagem.getText());

    // Fecha a conexão.
    conexao.close();
}

}