【问题标题】:Spring jms activemq春天 jms activemq
【发布时间】:2017-01-25 13:11:20
【问题描述】:

我使用activemq 和spring jms。我有问题。

这是我的电子邮件发件人

@Service
@PropertySource("classpath:/properties/dev/application.properties")
public class EmailSenderImpl implements EmailSender {
    private static final Logger LOGGER = LoggerFactory.getLogger(EmailSenderImpl.class);

    @Autowired
    private JmsTemplate jmsTemplate;

    @Autowired
    private Environment env;

    @Override
    public void sendEmail(final Users user, EmailCauses emailCause) {
        LOGGER.debug("Sending email to user with id {} with cause {}", user.getId(), emailCause);

        //Retrieve User profile which defined with lazy fetch type.
        //It prevents org.hibernate.LazyInitializationException in jms message receiver method
        user.getUserProfile();

        jmsTemplate.send(env.getProperty(emailCause.getEmailQueueName()),
                new MessageCreator () {

                    @Override
                    public Message createMessage(Session session) throws JMSException {
                        return session.createObjectMessage(user);
                    }
                }
        );  
    } 

这是我的电子邮件处理程序。

@Service
public class EmailHandler {
    private static final Logger LOGGER = LoggerFactory.getLogger(EmailHandler.class);

    private JavaMailSender mailSender;
    private VelocityEngine velocityEngine;
    private MessageSource messageSource;


    @Autowired
    public EmailHandler (JavaMailSender mailSender, VelocityEngine velocityEngine, MessageSource messageSource) {

        this.mailSender = mailSender;
        this.velocityEngine = velocityEngine;
        this.messageSource = messageSource;
    }


    //TODO - refactor method, add reserve server
    @Transactional
    public void processEmailNotifications (Users user) throws MessagingException, UnsupportedEncodingException {
        LOGGER.debug("Preparing to send greeting email to user {}", user);

        UserProfiles userProfile = user.getUserProfile();

        Map <String, Object> model = new HashMap <> ();
        model.put("name", userProfile.getName());
        model.put("patronymic", userProfile.getPatronymic());
        model.put("token", UriUtils.encode(user.getConfirmationToken(), "UTF8"));

        String email = user.getUserProfile().getEmail();
        sendEmail(email, "email.wellcome.subject", model, "wellcome_email.vm");

    }
     private void sendEmail (String emailTo, String subjectMessage, Map<String, Object> model, String templateName) {
        LOGGER.debug("Sending email to {} with subject message {}", emailTo, subjectMessage);

        try {

            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper (message, true, "UTF-8");

            helper.setTo(emailTo);
            helper.setSubject(messageSource.getMessage(subjectMessage, null, Locale.getDefault()));

            String emailText = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateName, "UTF-8", model);
            helper.setText(emailText, true);

            mailSender.send(message);
            LOGGER.info("Email to address {} with subject {} was sent successfully", emailTo, subjectMessage);

        } catch (MessagingException me) {
            LOGGER.error("Email to address {} was not sent", emailTo, me);

        }

    }

我的堆栈跟踪中有以下日志。我不明白为什么它不起作用。

o.s.jms.core.JmsTemplate - 在 JMS 会话上执行回调: 活动MQSession {id=ID:igor-Aspire-5820TG-33061-1474030841626-1:7:1,started=false} 2016-09-16 16:02:40.871 - [http-bio-8080-exec-6] [调试] o.s.jms.core.JmsTemplate - 发送创建的消息: ActiveMQTextMessage {commandId = 0, responseRequired = false, messageId = null, originalDestination = null, originalTransactionId = null,producerId = null,destination = null,transactionId = null, 到期 = 0,时间戳 = 0,到达 = 0,brokerInTime = 0, brokerOutTime = 0,correlationId = null,replyTo = null,persistent = 假,类型 = null,优先级 = 0,groupID = null,groupSequence = 0, targetConsumerId = null,compressed = false,userID = null,content = 空,编组属性=空,数据结构=空, redeliveryCounter = 0,大小 = 0,属性 = null,readOnlyProperties = false, readOnlyBody = false, droppable = false, text = xDDD}

【问题讨论】:

    标签: java jms activemq spring-jms


    【解决方案1】:

    您能否发布其他日志和 JmsTemplate 设置配置,因为会话未在您的日志和生产者、消息 ID 和目标上启动...信息为空

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 2013-07-22
      • 2023-03-16
      • 2015-12-01
      • 2011-01-20
      • 1970-01-01
      • 2022-12-03
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多