Skip to content

Instantly share code, notes, and snippets.

View spericas's full-sized avatar

Santiago Pericas-Geertsen spericas

  • Oracle
  • Weston, FL
View GitHub Profile
@spericas
spericas / MessageQueueResource.java
Created June 22, 2020 14:53
MessageQueueResource
@Path("rest")
public class MessageQueueResource {
@Inject
private MessageQueue messageQueue;
@POST
@Consumes("text/plain")
public void push(String s) {
messageQueue.push(s);
@ServerEndpoint(
value = "/websocket",
encoders = { UppercaseEncoder.class })
public class MessageBoardEndpoint {
@Inject
private MessageQueue messageQueue;
@OnMessage
public void onMessage(Session session, String message) {
public class UppercaseEncoder implements Encoder.Text<String> {
@Override
public String encode(String s) {
return s.toUpperCase();
}
@Override
public void init(EndpointConfig config) {
}
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 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 {
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();
<dependency>
<groupId>io.helidon.microprofile.websocket</groupId>
<artifactId>helidon-microprofile-websocket</artifactId>
</dependency>
<dependency>
<groupId>io.helidon.webserver</groupId>
<artifactId>helidon-webserver-tyrus</artifactId>
</dependency>
@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;
@spericas
spericas / ft-se-config.md
Last active June 2, 2022 18:35
FT SE Configuration

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: