0

I have problem to save data to mongodb is always null. The data is from redis message publisher that i want to save as a consumer.

I hope get the solution.

Thanks

Service

@Slf4j
@Service
@Transactional
public class Subscriber implements MessageListener {
    @Autowired
    private EmployeeRepositories employeeRepositories;
    ObjectMapper mapper = new ObjectMapper();
    @Override
    public void onMessage(Message message, byte[] pattern) {

        log.info("Message received {}", message);

        try {
            Employee employee = mapper.readValue(message.toString(), Employee.class);
            log.info("Employee {}", employee);
            log.info("NAME {}", employee.getEmpName());
            Employee emp = new Employee();
            emp.setEmpId(new Random().nextInt(1000));
            emp.setEmpName(employee.getEmpName());
            emp.setEmpSalary(employee.getEmpSalary());
            log.info("EMP SAVE {}", emp);
            employeeRepositories.save(emp);
        } catch (JsonProcessingException e) {
                throw new RuntimeException(e);
        }

    }

Employee.java

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "Employee")
public class Employee implements Serializable {
    @Id
    private ObjectId id;
    private Integer empId;
    private String empName;
    private Double empSalary;
}

Repositories


@Repository
public interface EmployeeRepositories extends MongoRepository<Employee, ObjectId> {

}

Always get Null

2023-01-29 21:06:00.855  INFO 10956 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2023-01-29 21:06:00.857  INFO 10956 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 2 ms
2023-01-29 21:06:01.321  INFO 10956 --- [edisContainer-2] com.heydeproject.subscriber.Subscriber   : Message received {"empId":707,"empName":"Employee 11111","empSalary":100.0}
2023-01-29 21:06:01.328  INFO 10956 --- [edisContainer-2] com.heydeproject.subscriber.Subscriber   : Employee Employee(empId=707, empName=Employee 11111, empSalary=100.0)
2023-01-29 21:06:01.340  INFO 10956 --- [edisContainer-2] com.heydeproject.subscriber.Subscriber   : NAME Employee 11111
2023-01-29 21:06:01.340  INFO 10956 --- [edisContainer-2] com.heydeproject.subscriber.Subscriber   : EMP SAVE Employee(empId=155, empName=Employee 11111, empSalary=100.0)
2023-01-29 21:06:01.345 ERROR 10956 --- [edisContainer-2] o.s.d.r.l.a.MessageListenerAdapter       : Listener execution failed

java.lang.NullPointerException: null
    at com.heydeproject.subscriber.Subscriber.onMessage(Subscriber.java:54) ~[classes/:na]
    at org.springframework.data.redis.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:296) ~[spring-data-redis-2.6.3.jar:2.6.3]
    at org.springframework.data.redis.listener.RedisMessageListenerContainer.executeListener(RedisMessageListenerContainer.java:263) ~[spring-data-redis-2.6.3.jar:2.6.3]
    at org.springframework.data.redis.listener.RedisMessageListenerContainer.processMessage(RedisMessageListenerContainer.java:253) ~[spring-data-redis-2.6.3.jar:2.6.3]
    at org.springframework.data.redis.listener.RedisMessageListenerContainer.lambda$dispatchMessage$1(RedisMessageListenerContainer.java:1051) ~[spring-data-redis-2.6.3.jar:2.6.3]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

use debug when use debug mode repositories is null

1 Answer 1

0

Done, resolve...

The solution is add @autowired Employee Repositories in redis appconfig configuration class

Thanks

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.