Basic configuration for SE FT commands. No configuration support for Async or Fallback.
What should be configurable:
- Bulkhead:
- limit (int)
- queue-length (int)
- name (string)
- cancel-source (boolean)
- Circuit breaker:
Basic configuration for SE FT commands. No configuration support for Async or Fallback.
What should be configurable:
@Path("/greet1") // CDI bean-defining annotation | |
@RequestScoped // implied by default | |
public class SampleResource1 { | |
private final GreetBean greetBean; | |
// Use @Inject instead of @Context | |
@Inject | |
private UriInfo uriInfo; |
<dependency> | |
<groupId>io.helidon.webserver</groupId> | |
<artifactId>helidon-webserver-tyrus</artifactId> | |
</dependency> |
<dependency> | |
<groupId>io.helidon.microprofile.websocket</groupId> | |
<artifactId>helidon-microprofile-websocket</artifactId> | |
</dependency> |
List<Class<? extends Encoder>> encoders = | |
Collections.singletonList(UppercaseEncoder.class); | |
Routing.builder() | |
.register("/rest", new MessageQueueService()) | |
.register("/websocket", | |
TyrusSupport.builder().register( | |
ServerEndpointConfig.Builder.create( | |
MessageBoardEndpoint.class, "/").encoders( | |
encoders).build()).build()) | |
.build(); |
public class MessageBoardEndpoint extends Endpoint { | |
private final MessageQueue messageQueue = MessageQueue.instance(); | |
@Override | |
public void onOpen(Session session, EndpointConfig endpointConfig) { | |
session.addMessageHandler(new MessageHandler.Whole<String>() { | |
@Override | |
public void onMessage(String message) { | |
try { |
public class MessageQueueService implements Service { | |
private final MessageQueue messageQueue = MessageQueue.instance(); | |
@Override | |
public void update(Routing.Rules routingRules) { | |
routingRules.post("/board", this::handlePost); | |
} | |
private void handlePost(ServerRequest request, ServerResponse response) { |
public class UppercaseEncoder implements Encoder.Text<String> { | |
@Override | |
public String encode(String s) { | |
return s.toUpperCase(); | |
} | |
@Override | |
public void init(EndpointConfig config) { | |
} |
@ServerEndpoint( | |
value = "/websocket", | |
encoders = { UppercaseEncoder.class }) | |
public class MessageBoardEndpoint { | |
@Inject | |
private MessageQueue messageQueue; | |
@OnMessage | |
public void onMessage(Session session, String message) { |
@Path("rest") | |
public class MessageQueueResource { | |
@Inject | |
private MessageQueue messageQueue; | |
@POST | |
@Consumes("text/plain") | |
public void push(String s) { | |
messageQueue.push(s); |