当前位置: 首页 > 知识库问答 >
问题:

主体不能分配给类/artemis spring boot

符懿轩
2023-03-14

我没有找到我的问题的答案,所以我在这里问它

resp.setJMSType("com.nesdl.flyaway.core.modelmessages.ApplicationsEvent");
log.debug(resp.getJMSType() + " / " + resp.getBody(String.class));
ApplicationsEvent response = resp.getBody(ApplicationsEvent.class);
2021-06-02 09:39:40.060 DEBUG 14288 --- [p-nio-80-exec-1] c.n.f.f.s.ApplicationsServicesImpl       : com.nesdl.flyaway.core.modelmessages.ApplicationsEvent / is null : "{\"applicationsDto\":[{\"id\":1,\"version\":0,\"dateCreated\":\"2021-05-18T17:52:30+0000\",\"dateLastModified\":\"2021-05-18T17:52:30+0000\",\"uuid\":\"66ef5e19-e5ac-48d1-86c8-85d26e0fa205\",\"valid\":true,\"modified\":false,\"toHistorize\":false,\"name\":\"TestApp\",\"description\":\"Première application\"}]}"
2021-06-02 09:39:40.066 DEBUG 14288 --- [p-nio-80-exec-1] o.s.web.servlet.DispatcherServlet        : Failed to complete request: javax.jms.MessageFormatException: Body not assignable to class com.nesdl.flyaway.core.modelmessages.ApplicationsEvent
2021-06-02 09:39:40.071 ERROR 14288 --- [p-nio-80-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.jms.MessageFormatException: Body not assignable to class com.nesdl.flyaway.core.modelmessages.ApplicationsEvent] with root cause

javax.jms.MessageFormatException: Body not assignable to class com.nesdl.flyaway.core.modelmessages.ApplicationsEvent
    at org.apache.activemq.artemis.jms.client.ActiveMQMessage.getBody(ActiveMQMessage.java:740) ~[artemis-jms-client-2.15.0.jar:2.15.0]
    at com.nesdl.flyaway.front.services.ApplicationsServicesImpl.getApplications(ApplicationsServicesImpl.java:52) ~[classes/:na]
    at com.nesdl.flyaway.front.services.ApplicationsServicesImpl$$FastClassBySpringCGLIB$$293cab08.invoke(<generated>) ~[classes/:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.6.jar:5.3.6]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779) ~[spring-aop-5.3.6.jar:5.3.6]
    @Override
    public List<ApplicationDto> getApplications() throws IOException, JMSException {
        ApplicationsEvent mess = ApplicationsEvent.builder()
                .applicationsDto(new ArrayList<>())
                .build();
        log.debug("message sent :"+mess.toString());
        Message resp = jmsTemplate.sendAndReceive(JmsSystemConfig.APPLICATIONS_QUEUE, new MessageCreator() {
            @SneakyThrows
            @Override
            public Message createMessage(Session session) throws JMSException {
                Message appMess = session.createTextMessage(objectMapper.writeValueAsString(mess));
                appMess.setStringProperty("_type","com.nesdl.flyaway.core.modelmessages.ApplicationsEvent");
                return appMess;
            }
        });
        resp.setJMSType("com.nesdl.flyaway.core.modelmessages.ApplicationsEvent");
        log.debug(resp.getJMSType() + " / " + resp.getBody(String.class));
        ApplicationsEvent response = resp.getBody(ApplicationsEvent.class);
        log.debug(response.getApplicationsDto().toString());
        return response.getApplicationsDto();
    }
    @JmsListener(destination = JmsSystemConfig.APPLICATIONS_QUEUE)
    public void replyApplications(@Payload ApplicationsEvent appsEvent, @Headers MessageHeaders headers, Message message) throws JMSException, JsonProcessingException {
        ApplicationsEvent resp = ApplicationsEvent.builder()
                .applicationsDto(as.getApplications())
                .build();
        jmsTemplate.convertAndSend(message.getJMSReplyTo(),objectMapper.writeValueAsString(resp));
        log.debug("reply ok "+resp.toString()+" / "+objectMapper.writeValueAsString(resp));
    }
@Configuration
public class JmsConfig {

    @Bean
    public MessageConverter jacksonJmsMessageConverter(ObjectMapper objectMapper) {
        MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
        converter.setTargetType(MessageType.TEXT);
        converter.setTypeIdPropertyName("_type");
        converter.setObjectMapper(objectMapper);
        return converter;
    }

}

共有1个答案

毋宏茂
2023-03-14

它表示您正在尝试将JMS消息体分配或添加到“事件类”中。事件通常有一个命名的重写方法,用于在事件被触发时将代码放置在其中以运行该代码。

这里可能是这样的,编译器错误消息似乎表明“resp”,一个消息体和“response”applicationsevent。

resp.setJMSType("com.nesdl.flyaway.core.modelmessages.ApplicationsEvent");
        log.debug(resp.getJMSType() + " / " + resp.getBody(String.class));
        ApplicationsEvent response = resp.getBody(ApplicationsEvent.class);
        log.debug(response.getApplicationsDto().toString());
 类似资料:
  • 这是一个类中的函数,允许你双击和单击手势。它在Swift 2.3中运行良好,但在转换到Swift 3后,它抛出了一些错误。我怎么也想不明白。我评论了它们发生的地方。

  • 这是我的水果 现在我正在导入另一个typescript文件中的fruit.ts。这是我的 当我做的时候 我得到一个错误: 类型“string”不能分配给类型“orange”“apple”“banana”“ 如何将字符串赋给自定义类型fruit的变量?

  • 我正在为我的应用程序使用React-typescript。对于状态管理,我使用Redux工具包。我正在获取一个开放api并将其存储到我的redux存储库中。我创建了分派函数。当我点击dispatch函数时,它将显示随机狗图像。但问题是当我使用这个img src时,在映射之后。我收到typescript错误:我不知道我做错了什么。我在codesandbox中上传了我的代码,虽然它在codesandb

  • 在我的班级中,我有一个属性: 并希望将其设置为: 设置此设置时,我会得到错误

  • 我有一个打字错误: 类型“(element:Conversation)=>void”的参数不可赋给类型“(value:Conversations,index:number,obj:Conversation[])=>boolean”的参数。不能将“void”类型赋给“boolean”类型。 这个错误是什么意思?提前谢谢你。

  • 问题内容: 在上面的代码示例中,我尝试通过使用参数表单击按钮来调用方法( fetchData )。 错误是 类型’void’不能分配给类型’((event:MouseEvent)= > void)| 未定义”。 问题答案: 在您的代码中,您正在 调用 该函数。函数返回。不能期望哪个功能。 创建一个调用fetchData的新函数,例如。 更多 这是TypeScript防止的非常常见的错误