小编Sha*_*our的帖子

Kafka Consumer标记协调员2147483647死亡

我使用Kafka Server 0.9与消费者kafka-client版本0.9和kafka-producer 0.8.2.

每件事情都很有效,除非我得到很多关于协调员死于消费者的信息

2016-02-25 19:30:45.046  INFO 10263 --- [      cdrServer] o.a.k.c.c.internals.AbstractCoordinator  : Marking the coordinator 2147483647 dead.
2016-02-25 19:30:45.048  INFO 10263 --- [      cdrServer] o.a.k.c.c.internals.AbstractCoordinator  : Marking the coordinator 2147483647 dead.
2016-02-25 19:30:45.049  INFO 10263 --- [      cdrServer] o.a.k.c.c.internals.AbstractCoordinator  : Marking the coordinator 2147483647 dead.
2016-02-25 19:30:45.050  INFO 10263 --- [      cdrServer] o.a.k.c.c.internals.AbstractCoordinator  : Marking the coordinator 2147483647 dead.
2016-02-25 19:30:45.051  INFO 10263 --- [      cdrServer] o.a.k.c.c.internals.AbstractCoordinator  : Marking the coordinator 2147483647 dead.
2016-02-25 19:30:45.052  INFO 10263 --- …
Run Code Online (Sandbox Code Playgroud)

apache-kafka kafka-consumer-api

22
推荐指数
3
解决办法
3万
查看次数

spring-data-jpa调用存储过程

我试图在CRUDRepository上创建一个调用存储过程的方法,我正在尝试一个非常简单的过程.

我在mysql服务器上创建了一个存储过程,如下所示

CREATE DEFINER=`cdrserver`@`192.168.%` PROCEDURE `getCarrier`()
BEGIN
   SELECT * FROM `CARRIER`;
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

然后在一个实体上

@NamedStoredProcedureQuery(name="getCarrier",procedureName="getCarrier",resultClasses=Carrier.class)
public class Carrier {
Run Code Online (Sandbox Code Playgroud)

在存储库上

@Procedure(name="getCarrier")
List<Carrier> getPCarrier();
Run Code Online (Sandbox Code Playgroud)

但每次我调用这个方法我都会得到以下错误

org.springframework.dao.InvalidDataAccessApiUsageException: Could not locate parameter registered using that position [1]; nested exception is java.lang.IllegalArgumentException: Could not locate parameter registered using that position [1]
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:384)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:216)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:111)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
at com.sun.proxy.$Proxy85.getPCarrier(Unknown Source)
at com.teltacworldwide.nocpanel.mvc.DefaultController.cdrgroup(DefaultController.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) …
Run Code Online (Sandbox Code Playgroud)

stored-procedures spring-data-jpa

6
推荐指数
1
解决办法
3058
查看次数

添加 STOMP 标头而不在 ChannelInterceptorAdapter 上重新创建消息

我需要向 STOMP 消息添加标头,目前它的工作方式如下,但我正在重新创建消息,是否可以只添加本机标头而不必重新创建消息以提高性能。

public class MyChannelInterceptor extends ChannelInterceptorAdapter {


    @Override
      public Message<?> preSend(Message<?> message, MessageChannel channel) {
        StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);

        StompCommand command = accessor.getCommand();
        if(command != null) {
            log.debug("Receiving msg {} from {}",command,accessor.getUser().getName());
            if(command == StompCommand.SEND) {
                log.debug("Adding expires header to  msg {} from {}",command,accessor.getUser().getName());
                String ttlString = accessor.getFirstNativeHeader("ttl");
                long ttl = 30000;
                try {
                    ttl = Long.parseLong(ttlString);
                } 
                catch(Exception ex) {
                    log.error("TTL header received but not in correct format {}",ttlString);
                }
                accessor.addNativeHeader("expires", Long.toString(System.currentTimeMillis() + ttl));

                return MessageBuilder.createMessage(message.getPayload(), accessor.getMessageHeaders()); …
Run Code Online (Sandbox Code Playgroud)

spring-messaging spring-websocket

3
推荐指数
1
解决办法
1888
查看次数

在 SpringBoot 中将生成的报告作为电子邮件附件发送

我希望能够将使用JasperReports生成的报告作为附件发送。目前在我的应用程序中,我可以使用JasperReportsViewResolver查看报告,下面是我的配置

@Bean
public JasperReportsViewResolver getJasperReportsViewResolver() {
  JasperReportsViewResolver resolver = new JasperReportsViewResolver();
  resolver.setPrefix("classpath:/static/jasper/");
  resolver.setSuffix(".jrxml");
  resolver.setReportDataKey("datasource");
  resolver.setViewNames("rpt_*");
  resolver.setViewClass(JasperReportsMultiFormatView.class);
  resolver.setOrder(0);
  return resolver;
}  
Run Code Online (Sandbox Code Playgroud)

我无法从这个 viewresolver 获取输入资源,所以下面是我正在考虑的想法,但我不确定这是最好的方法

 JasperDesign jasperDesign =  JRXmlLoader.load(getClass().getResourceAsStream("/jasper/rpt_media.jrxml"));
 JasperReport report = JasperCompileManager.compileReport(jasperDesign);
 JRDataSource reportData = new JREmptyDataSource();

 Map<String, Object> parameters = new HashMap<String, Object>();
 parameters.put("reportTitle", "dfa dafdf d dfd");

 OutputStream stream = new FileOutputStream(tempfile);

 JasperReportsUtils.renderAsPdf(report, parameters, reportData, stream);
Run Code Online (Sandbox Code Playgroud)

将报告保存到随机文件后,我确实阅读了它并作为附件发送。

还有什么建议吗?

java spring-mvc jasper-reports spring-boot

3
推荐指数
1
解决办法
3663
查看次数

扩展RepositoryRestExceptionHandler

我想扩展RepositoryRestExceptionHandler以处理RestController中的错误。

我有验证器,并且在使用RestRepository时工作良好,但是当我使用RestController时,它们却不是,所以我做了如下所示的手动验证

Errors errors = new BeanPropertyBindingResult(NumberRange, "range");
    NumberRangeValidator.validate(NumberRange, errors);

    if(errors.hasErrors()) {
         throw new RepositoryConstraintViolationException(errors);
    }
Run Code Online (Sandbox Code Playgroud)

这导致错误500,我想要得到的结果与正文中列出的错误400错误请求相同。

我认为我应该扩展下面的类来处理来自我的剩余控制器的异常

@ControllerAdvice(basePackageClasses = RepositoryRestExceptionHandler.class)
public class RepositoryRestExceptionHandler { .... }
Run Code Online (Sandbox Code Playgroud)

我试图避免创建与RepositoryRestExceptionHandler完全相同的ControllerAdvice

谢谢

spring spring-mvc spring-data-rest

1
推荐指数
1
解决办法
981
查看次数

具有主要自动配置的spring boot辅助数据源

我正在尝试配置两个jpa数据源,我做了同样的例子,每件事都很好,但是可以自动完成自动配置,只需添加一个新的,无需LocalContainerEntityManagerFactoryBean手动创建.

 @Primary
    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

@Bean
PlatformTransactionManager transactionManager() {
    return new JpaTransactionManager(entityManagerFactory().getObject());
}

@Bean
LocalContainerEntityManagerFactoryBean entityManagerFactory() {

    HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
    jpaVendorAdapter.setGenerateDdl(false);

    LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

    factoryBean.setDataSource(dataSource());
    factoryBean.setJpaVendorAdapter(jpaVendorAdapter);

    factoryBean.setPackagesToScan("com.xxxxxxxx.common.domain","com.xxxxxxx.tekram.cdrserver.domain");

    return factoryBean;
}
Run Code Online (Sandbox Code Playgroud)

spring-data-jpa spring-boot

1
推荐指数
1
解决办法
3630
查看次数