เชเซเชฎ เชเซ เชฌเชงเชพ! เชคเซ เช
เชนเซเช เชเซ - เชเซเชตเชพเชฐเซเชเชธ เชถเซเชฐเซเชฃเซเชฎเชพเช เช
เชฎเชพเชฐเซ เช
เชเชคเชฟเชฎ เชชเซเชธเซเช! (เชฎเชพเชฐเซเช เชฆเซเชตเชพเชฐเชพ, เช
เชฎเชพเชฐเซ เชตเซเชฌเชฟเชจเชพเชฐ เชเซเช
ะ
เชเชตเซเชคเซเชคเชฟ 0.17.0 เชฅเซ,
เชเชตเซเช เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซ เชคเชฎเซ เชเชชเชจเชถเชฟเชซเซเช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชชเชฐ AMQ เชเชจเชฒเชพเชเชจ เชชเชนเซเชฒเซเชฅเซ เช เชเชฎเชพเชตเซเชฏเซเช เชเซ (เชเซ เชจเชนเซเช, เชคเซ เชชเชเซ เชเซเช
เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เช เชฎเซ เชเซเชตเชพเชฐเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเซเชถเซเช เชเซ เชชเซเชฐเชคเชฟเชเซเชฐเชฟเชฏเชพเชถเซเชฒ เชฎเซเชธเซเชเชฟเชเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเช เชธเชฐเชณ เชเชฐเซเชกเชฐ เชชเซเชฐเซเชธเซเชธเชฟเชเช เชธเชฟเชธเซเชเชฎ เชนเชถเซ. เช เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชเชฐเซเชกเชฐ เชเชจเชฐเซเชเชฐ เชถเชพเชฎเซเชฒ เชนเชถเซ เชเซ เชเช เชจเชฟเชถเซเชเชฟเชค เช เชเชคเชฐเชพเชฒ เชชเชฐ เชธเชเชฆเซเชถ เชเชคเชพเชฐเชฎเชพเช เชเชฐเซเชกเชฐ เชฎเซเชเชฒเซ เชเซ, เชคเซเชฎเช เชเชฐเซเชกเชฐ เชชเซเชฐเซเชธเซเชธเชฐ เชเซ เชเซ เชเชคเชพเชฐเชฎเชพเชเชฅเซ เชธเชเชฆเซเชถเชพเช เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชถเซ เช เชจเซ เชฌเซเชฐเชพเชเชเชฐเชฎเชพเช เชเซเช เชถเชเชพเชฏ เชคเซเชตเชพ เชชเซเชทเซเชเชฟเชเชฐเชฃเซ เชเชจเชฐเซเช เชเชฐเชถเซ.
เชเชเชตเชพเชฐ เช เชฎเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเซ เชฒเซเชงเชพ เชชเชเซ, เช เชฎเซ เชคเชฎเชจเซ เชฌเชคเชพเชตเซเชถเซเช เชเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ เชเซเช เชตเชฃเซ เชเซเชตเซ เชฐเซเชคเซ เชเชฎเซเชฌเซเชก เชเชฐเชตเซ เช เชจเซ เชธเชฟเชธเซเชเชฎ เชชเชฐ เช เชฎเชจเซ เชเชฐเซเชฐเซ เชธเชเชธเชพเชงเชจเซเชจเซ เชเซเชเชตเชพเช เชเชฐเชตเชพ เชฎเชพเชเซ AMQ เชเชจเชฒเชพเชเชจเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ.
เชเซเชตเชพเชฐเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจ
เช
เชฎเชพเชฐเซ เชเซเชตเชพเชฐเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจ OpenShift เชชเชฐ เชเชพเชฒเซ เชเซ เช
เชจเซ เชคเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซเช เชธเซเชงเชพเชฐเซเชฒเซเช เชธเชเชธเซเชเชฐเชฃ เชเซ
เชเชฐเซเชกเชฐ เชเชจเชฐเซเชเชฐ
เชเชจเชฐเซเชเชฐ เชซเชเซเชค เชเชเชตเชฟเชง เชฐเซเชคเซ เชตเชงเชคเชพ เชเชฐเซเชกเชฐ ID เชจเซ เชฆเชฐ 5 เชธเซเชเชจเซเชกเซ "เชเชฐเซเชกเชฐ" เชธเชฐเชจเชพเชฎเชพเช เชชเชฐ เชฎเซเชเชฒเซ เชเซ.
@ApplicationScoped
public class OrderGenerator {
private int orderId = 1;
@Outgoing("orders")
public Flowable<Integer> generate() {
return Flowable.interval(5, TimeUnit.SECONDS)
.map(tick -> orderId++);
}
}
เชเชฐเซเชกเชฐ เชชเซเชฐเซเชธเซเชธเชฐ
เชเชฐเซเชกเชฐ เชนเซเชจเซเชกเชฒเชฐ เชตเชงเซ เชธเชฐเชณ เชเซ, เชคเซ เชซเชเซเชค "เชชเซเชทเซเชเชฟ" เชธเชฐเชจเชพเชฎเชพเช เชชเชฐ เชชเซเชทเซเชเชฟเชเชฐเชฃ ID เชชเชฐเชค เชเชฐเซ เชเซ.
@ApplicationScoped
public class OrderProcessor {
@Incoming("orders")
@Outgoing("confirmations")
public Integer process(Integer order) {
// ะะดะตะฝัะธัะธะบะฐัะพั ะฟะพะดัะฒะตัะถะดะตะฝะธั ัะฐะฒะตะฝ ัะดะฒะพะตะฝะฝะพะผั ะธะดะตะฝัะธัะธะบะฐัะพัั ะทะฐะบะฐะทะฐ <img draggable="false" class="emoji" alt=":-)" src="https://s.w.org/images/core/emoji/11.2.0/svg/1f642.svg">
return order * 2;
}
}
เชชเซเชทเซเชเชฟ เชธเชเชธเชพเชงเชจเซ
เชชเซเชทเซเชเชฟเชเชฐเชฃ เชธเชเชธเชพเชงเชจ เช เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชเชจเชฐเซเช เชฅเชฏเซเชฒ เชชเซเชทเซเชเชฟเชเชฐเชฃเซเชจเซ เชธเซเชเชฟเชฌเชฆเซเชง เชเชฐเชตเชพ เชฎเชพเชเซ เชเช HTTP เช เชเชคเชฟเชฎ เชฌเชฟเชเชฆเซ เชเซ.
@Path("/confirmations")
public class ConfirmationResource {
@Inject
@Stream("confirmations") Publisher<Integer> orders;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
@GET
@Path("/stream")
@Produces(MediaType.SERVER_SENT_EVENTS)
public Publisher<Integer> stream() {
return orders;
}
}
เชเซเช เชตเชฃ
AMQ เชเชจเชฒเชพเชเชจ เชธเชพเชฅเซ เชเซเชกเชพเชตเชพ เชฎเชพเชเซ, เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเซเชเชฒเชพเช เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชกเซเชเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ, เชเซเชฎ เชเซ: เชเซเชตเชพเชฐเซเชเชธ เชเชจเซเชเซเชเชฐ เชเซเช เชตเชฃเซ, AMQP เชเชจเซเชกเชชเซเชเชจเซเช เชฎเชพเชนเชฟเชคเซ เช เชจเซ เชเซเชฒเชพเชฏเชเช เชเชณเชเชชเชคเซเชฐ. เช เชฒเชฌเชคเซเชค, เชคเชฎเชพเชฎ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชกเซเชเชพเชจเซ เชเช เช เชเชเซเชฏเชพเช เชฐเชพเชเชตเซเช เชตเชงเซ เชธเชพเชฐเซเช เชเซ, เชชเชฐเชเชคเซ เชเซเชตเชพเชฐเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเซเช เชตเชตเชพ เชฎเชพเชเซเชจเชพ เชธเชเชญเชตเชฟเชค เชตเชฟเชเชฒเซเชชเซ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชเซ เช เชฎเซ เชคเซเชฎเชจเซ เชเชพเชฃเซเชเซเชเชจเซ เช เชฒเช เชเชฐเซเชถเซเช.
เชเชจเซเชเซเชเชฐเซเชธ
เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเซเชฐเซเชชเชฐเซเชเซเช เชซเชพเชเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชฎเซเชชเชพเชเชฒ เชธเชฎเชฏเซ เชเชจเซเชเซเชเชฐ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชถเชเชพเชฏ เชเซ:
mp.messaging.outgoing.orders.connector=smallrye-amqp
mp.messaging.incoming.orders.connector=smallrye-amqp
เชตเชธเซเชคเซเช เชธเชฐเชณ เชฐเชพเชเชตเชพ เชฎเชพเชเซ, เช เชฎเซ เชซเชเซเชค "เชเชฐเซเชกเชฐ" เชธเชฐเชจเชพเชฎเชพ เชฎเชพเชเซ เชธเชเชฆเซเชถ เชเชคเชพเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช. เช เชจเซ เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช "เชชเซเชทเซเชเชฟ" เชธเชฐเชจเชพเชฎเซเช เชฎเซเชฎเชฐเซเชฎเชพเช เชเชคเชพเชฐเชจเซ เชเชชเชฏเซเช เชเชฐเชถเซ.
AMQP เชเชจเซเชกเชชเซเชเชจเซเช
เชเชฎเซเชชเชพเชเชฒ เชธเชฎเชฏเซ, AMQP เชเชจเซเชกเชชเซเชเชจเซเช เชฎเชพเชเซ เชนเซเชธเซเชเชจเชพเชฎ เช เชจเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เช เชเซเชเชพเชค เชเซ, เชคเซเชฅเซ เชคเซเชฎเชจเซ เชเชจเซเชเซเชเซเช เชเชฐเชตเซเช เชเชตเชถเซเชฏเช เชเซ. AMQ เชเชจเชฒเชพเชเชจ เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเซเชฒ เชฐเซเชชเชฐเซเชเชพ เชฎเซเชชเชฎเชพเช เชเชจเซเชกเชชเซเชเชจเซเช เชธเซเช เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชคเซเชฅเซ เช เชฎเซ เชคเซเชฎเชจเซ เชเชชเซเชฒเซเชเซเชถเชจ เชฎเซเชจเชฟเชซเซเชธเซเชเชฎเชพเช เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเชฒเซ เชฆเซเชตเชพเชฐเชพ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซเชถเซเช:
spec:
template:
spec:
containers:
- env:
- name: AMQP_HOST
valueFrom:
configMapKeyRef:
name: quarkus-config
key: service.host
- name: AMQP_PORT
valueFrom:
configMapKeyRef:
name: quarkus-config
key: service.port.amqp
เชเชณเชเชชเชคเซเชฐ
เชธเชฐเซเชตเชฟเชธ เชเชเชพเชเชจเซเช เชเซเชเชจเชจเซ เชเชชเชฏเซเช เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ OpenShift เชชเชฐ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเช เชถเชเซ เชเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชชเชนเซเชฒเชพ เชเชธเซเชเชฎ เชเชจเซเชซเชฟเชเชธเซเชฐเซเชธ เชฌเชจเชพเชตเชตเซเช เชชเชกเชถเซ เชเซ เชชเซเชกเชจเซ เชซเชพเชเชฒ เชธเชฟเชธเซเชเชฎเชฎเชพเชเชฅเซ เชเชฅเซเชจเซเชเชฟเชเซเชถเชจ เชเซเชเชจ เชตเชพเชเชเชถเซ:
public class MessagingCredentialsConfigSource implements ConfigSource {
private static final Set<String> propertyNames;
static {
propertyNames = new HashSet<>();
propertyNames.add("amqp-username");
propertyNames.add("amqp-password");
}
@Override
public Set<String> getPropertyNames() {
return propertyNames;
}
@Override
public Map<String, String> getProperties() {
try {
Map<String, String> properties = new HashMap<>();
properties.put("amqp-username", "@@serviceaccount@@");
properties.put("amqp-password", readTokenFromFile());
return properties;
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
@Override
public String getValue(String key) {
if ("amqp-username".equals(key)) {
return "@@serviceaccount@@";
}
if ("amqp-password".equals(key)) {
try {
return readTokenFromFile();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
return null;
}
@Override
public String getName() {
return "messaging-credentials-config";
}
private static String readTokenFromFile() throws IOException {
return new String(Files.readAllBytes(Paths.get("/var/run/secrets/kubernetes.io/serviceaccount/token")), StandardCharsets.UTF_8);
}
}
เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเซ เช เชจเซ เชเชฎเชพเชตเซ
เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชเซเชเซเชเซเชฏเซเชเซเชฌเชฒ เชซเชพเชเชฒเชฎเชพเช เชเชฎเซเชชเชพเชเชฒ เชเชฐเชตเซ เชเชตเชถเซเชฏเช เชนเซเชตเชพเชฅเซ, GraalVM เชตเชฐเซเชเซเชฏเซเช
เชฒ เชฎเชถเซเชจ เชเชฐเซเชฐเซ เชเซ. เช เชฎเชพเชเซ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชเซเชตเซ เชฐเซเชคเซ เชธเซเช เชเชฐเชตเซเช เชคเซเชจเซ เชตเชฟเชเชคเซ เชฎเชพเชเซ, เชฎเชพเช เช
เชจเซเชฐเซเชช เชธเซเชเชจเชพเช เชเซเช
เชชเชเซ, เชคเซเชฏเชพเช เชเชชเซเชฒเซ เชธเซเชเชจเชพเชเชจเซ เช เชจเซเชธเชฐเซเชจเซ, เชคเชฎเชพเชฐเซ เชธเซเชฐเซเชค เชกเชพเชเชจเชฒเซเชก เชเชฐเชตเชพเชจเซ, เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเชตเชพ เช เชจเซ เชเชฎเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
git clone https://github.com/EnMasseProject/enmasse-example-clients
cd enmasse-example-clients/quarkus-example-client
oc new-project myapp
mvn -Pnative -Dfabric8.mode=openshift -Dfabric8.build.strategy=docker package fabric8:build fabric8:resource fabric8:apply
เช เชเชฆเซเชถเซ เชชเชเซ, เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชฎเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ, เชชเชฐเชเชคเซ เชเซเชฏเชพเช เชธเซเชงเซ เช เชฎเซ AMQ เชเชจเชฒเชพเชเชจ เชฎเชพเช เชเชฐเซเชฐเซ เชฎเซเชธเซเชเชฟเชเช เชธเชเชธเชพเชงเชจเซเชจเซ เชเซเช เชตเซเชถเซเช เชจเชนเซเช เชคเซเชฏเชพเช เชธเซเชงเซ เชคเซ เชถเชฐเซ เชฅเชถเซ เชจเชนเซเช.
เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชนเชตเซ เชเซ เชฌเชพเชเซ เชเซ เชคเซ เชธเชเชธเชพเชงเชจเซเชจเซ เชธเซเช เชเชฐเชตเชพเชจเซเช เชเซ เชเซเชจเซ เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎเชฎเชพเช เชเชฐเซเชฐ เชเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ: 1) เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ เชเชจเซเชกเชชเซเชเชจเซเช เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเช เชธเชฐเชจเชพเชฎเชพเชเชจเซ เชเชเซเชฏเชพ; 2) เช เชฎเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชเซ เชธเชฐเชจเชพเชฎเชพเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช เชคเซเชจเซ เชเซเช เชตเชตเชพ เชฎเชพเชเซเชจเซเช เชธเชฐเชจเชพเชฎเซเช; 3) เชเซเชฒเชพเชฏเชเช เชเชณเชเชชเชคเซเชฐเซ เชธเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเซเชธเซเชเชฟเชเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ.
เชธเชฐเชจเชพเชฎเชพเชเชจเซ เชเชเซเชฏเชพ
AMQ เชเชจเชฒเชพเชเชจเชฎเชพเช AddressSpace เชเชฌเซเชเซเชเซเช เช เชธเชฐเชจเชพเชฎเชพเชเชจเซเช เชเช เชเซเชฅ เชเซ เชเซ เชเซเชกเชพเชฃเชจเชพ เช เชเชคเชฟเชฎ เชฌเชฟเชเชฆเซเช เช เชจเซ เชชเซเชฐเชฎเชพเชฃเซเชเชฐเชฃ เช เชจเซ เช เชงเชฟเชเซเชคเชคเชพ เชจเซเชคเชฟเช เชถเซเชฐ เชเชฐเซ เชเซ. เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชเชกเซเชฐเซเชธ เชธเซเชชเซเชธ เชฌเชจเชพเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเชฎเซ เชธเซเชชเชทเซเช เชเชฐเซ เชถเชเซ เชเซ เชเซ เชฎเซเชธเซเชเชฟเชเช เชเชจเซเชกเชชเซเชเชจเซเชเซเชธ เชเซเชตเซ เชฐเซเชคเซ เชเซเชฒเซเชฒเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ:
apiVersion: enmasse.io/v1beta1
kind: AddressSpace
metadata:
name: quarkus-example
spec:
type: brokered
plan: brokered-single-broker
endpoints:
- name: messaging
service: messaging
exports:
- name: quarkus-config
kind: configmap
เชธเชฐเชจเชพเชฎเชพเชเช
เชธเชฐเชจเชพเชฎเชพเชเชจเซ เชเชชเชฏเซเช เชธเชเชฆเซเชถเชพ เชฎเซเชเชฒเชตเชพ เช เชจเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ. เชฆเชฐเซเช เชธเชฐเชจเชพเชฎเชพเชเชจเซ เชเช เชชเซเชฐเชเชพเชฐ เชนเซเชฏ เชเซ, เชเซ เชคเซเชจเชพ เช เชฐเซเชฅเชถเชพเชธเซเชคเซเชฐ เชคเซเชฎเช เชเช เชฏเซเชเชจเชพ เชจเชเซเชเซ เชเชฐเซ เชเซ, เชเซ เช เชจเชพเชฎเชค เชฐเชพเชเชตเชพ เชฎเชพเชเซเชจเชพ เชธเชเชธเชพเชงเชจเซเชจเซ เชธเชเชเซเชฏเชพเชจเซ เชเชฒเซเชฒเซเช เชเชฐเซ เชเซ. เชธเชฐเชจเชพเชฎเซเช เชจเชเซเชเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชจเซ เชเซเชฎ:
apiVersion: enmasse.io/v1beta1
kind: Address
metadata:
name: quarkus-example.orders
spec:
address: orders
type: queue
plan: brokered-queue
เชฎเซเชธเซเชเชฟเชเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ
เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซ เชซเชเซเชค เชตเชฟเชถเซเชตเชธเชจเซเชฏ เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชคเชฎเชพเชฐเชพ เชธเชฐเชจเชพเชฎเชพเช เชชเชฐ เชธเชเชฆเซเชถเชพ เชฎเซเชเชฒเซ เช เชจเซ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชถเชเซ เชเซ, เชคเชฎเชพเชฐเซ เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎเชฎเชพเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชฌเชจเชพเชตเชตเซ เชเชตเชถเซเชฏเช เชเซ. เชเซเชฒเชธเซเชเชฐ เชชเชฐ เชเชพเชฒเชคเซ เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชฎเชพเชเซ, เชเซเชฒเชพเชฏเชเชเชจเซ OpenShift เชธเชฐเซเชตเชฟเชธ เชเชเชพเชเชจเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชชเซเชฐเชฎเชพเชฃเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ. เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ "เชธเซเชตเชพ เชเชพเชคเซเช" เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชจเชพ เชเซเชตเซเช:
apiVersion: user.enmasse.io/v1beta1
kind: MessagingUser
metadata:
name: quarkus-example.app
spec:
username: system:serviceaccount:myapp:default
authentication:
type: serviceaccount
authorization:
- operations: ["send", "recv"]
addresses: ["orders"]
เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเซเช เชตเชตเชพเชจเซ เชชเชฐเชตเชพเชจเชเซเช
เช เชฎเซ AMQP เชเชจเซเชกเชชเซเชเชจเซเช เชฎเชพเชนเชฟเชคเซเชจเซ เชเชฎเซเชฌเซเชก เชเชฐเชตเชพ เชฎเชพเชเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชงเซเชฒเชพ เชฐเซเชชเชฐเซเชเชพ เชฎเซเชช เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ AMQ Online เชฎเชพเชเซ, เชญเซเชฎเชฟเชเชพ เช เชจเซ เชฐเซเชฒเชฌเชพเชเชจเซเชกเชฟเชเช เชธเซเช เชเชฐเชตเซเช เชเชตเชถเซเชฏเช เชเซ:
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: quarkus-config
spec:
rules:
- apiGroups: [ "" ]
resources: [ "configmaps" ]
verbs: [ "create" ]
- apiGroups: [ "" ]
resources: [ "configmaps" ]
resourceNames: [ "quarkus-config" ]
verbs: [ "get", "update", "patch" ]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: quarkus-config
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: quarkus-config
subjects:
- kind: ServiceAccount
name: address-space-controller
namespace: amq-online-infra
เชฐเซเชชเชฐเซเชเชพเชเชเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชฒเชพเชเซ เชเชฐเชตเชพ
เชคเชฎเซ เช เชฐเซเชคเซ เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ เชเซเช เชตเชฃเซเชจเซ เชฒเชพเชเซ เชเชฐเซ เชถเชเซ เชเซ:
cd enmasse-example-clients/quarkus-example-client
oc project myapp
oc apply -f src/main/resources/k8s/addressspace
oc apply -f src/main/resources/k8s/address
เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชเชพเชธเชฃเซ
เชเชชเซเชฒเชฟเชเซเชถเชจ เชถเชฐเซ เชฅเช เชเซ เชคเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชธเซ เชชเซเชฐเชฅเชฎ, เชเชพเชฒเซ เชคเชชเชพเชธเซเช เชเซ เช เชจเซเชฐเซเชช เชธเชฐเชจเชพเชฎเชพเช เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ เช เชจเซ เชธเชเซเชฐเชฟเชฏ เชเซ เชเซ เชเซเชฎ:
until [[ `oc get address quarkus-example.prices -o jsonpath='{.status.phase}'` == "Active" ]]; do echo "Not yet ready"; sleep 5; done
เชชเชเซ เชเชพเชฒเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฐเซเช URL เชจเซ เชคเชชเชพเชธเซเช (เชซเชเซเชค เช เชธเชฐเชจเชพเชฎเซเช เชฌเซเชฐเชพเชเชเชฐเชฎเชพเช เชเซเชฒเซ):
echo "http://$(oc get route quarkus-example-client -o jsonpath='{.spec.host}')/prices.html"
เชฌเซเชฐเชพเชเชเชฐ เช เชฌเชคเชพเชตเชตเซเช เชเซเชเช เชเซ เชเชฟเชเชฟเชเซ เชธเชฎเชฏเชพเชเชคเชฐเซ เช เชชเชกเซเช เชฅเชพเชฏ เชเซ เชเชพเชฐเชฃ เชเซ AMQ เชเชจเชฒเชพเชเชจ เชฆเซเชตเชพเชฐเชพ เชธเชเชฆเซเชถเชพเช เชฎเซเชเชฒเชตเชพเชฎเชพเช เช เชจเซ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เชเซ.
เชเชเชคเซเชฐ เชเชฐเชตเซเช
เชคเซเชฅเซ เช เชฎเซ เชเซเชตเชพเชฐเซเชเชธ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฒเชเซ เชเซ เชเซ เชฎเซเชธเซเชเชฟเชเช เชฎเชพเชเซ AMQP เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ Red Hat OpenShift เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชชเชฐ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชฐเซเชชเชฐเซเชเชพเชเชเชฟเชค เชเชฐเซ เชเซ, เช เชจเซ AMQ เชเชจเชฒเชพเชเชจ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชชเชฐ เชเชงเชพเชฐเชฟเชค เชคเซเชจเซเช เชฐเซเชชเชฐเซเชเชพเชเชเชจ เช เชฎเชฒเชฎเชพเช เชฎเซเชเซเชฏเซเช เชเซ. เช เชฎเซ เชชเชเซ เช เชฎเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซ เชฎเซเชธเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎ เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชฎเซเชจเชฟเชซเซเชธเซเช เชฌเชจเชพเชตเซเชฏเชพเช.
เช เชเซเชตเชพเชฐเซเชเชธ เชตเชฟเชถเซเชจเซ เชถเซเชฐเซเชฃเซเชจเซ เชธเชฎเชพเชชเซเชค เชเชฐเซ เชเซ, เชชเชฐเชเชคเซ เชเชเชณ เชเชฃเซ เชจเชตเซ เช
เชจเซ เชฐเชธเชชเซเชฐเชฆ เชตเชธเซเชคเซเช เชเซ, เชเซเชฏเซเชจ เชฐเชนเซ!
เชธเซเชฐเซเชธ: www.habr.com