package learningspringboot; import java.time.LocalDateTime; import java.util.Random; import org.springframework.boot.actuate.metrics.CounterService; import org.springframework.jms.core.JmsTemplate; import org.springframework.scheduling.annotation.Scheduled; public class NetworkEventSimulator { // tag::simulator[] final private JmsTemplate jmsTemplate; final private String destination; final private CounterService counterService; public NetworkEventSimulator(JmsTemplate jmsTemplate, String destination, CounterService counterService) { this.jmsTemplate = jmsTemplate; this.destination = destination; this.counterService = counterService; } // end::simulator[] // tag::simulateactivity[] @Scheduled(fixedRate = 1000L) public void simulateActivity() { // end::simulateactivity[] Random random = new Random(); String hostname; switch (random.nextInt(3)) { case 0: hostname = "router101"; break; case 1: hostname = "multiplex205"; break; default: hostname = "switch1143"; break; } Severity severity; switch (random.nextInt(4)) { case 0: severity = Severity.UP; break; case 1: severity = Severity.DEGRADED; break; case 2: severity = Severity.JEOPARDY; break; default: severity = Severity.DOWN; break; } // tag::produced[] Alarm event = new Alarm(hostname, LocalDateTime.now(), severity); jmsTemplate.convertAndSend(destination, event); counterService.increment("messages.total.produced"); counterService.increment("messages." + event.getHostname() + ".produced"); } // end::produced[] }