JMS에서 동적으로 topic 생성 관련 질문입니다.

strongspirit의 이미지

안녕하세요.
JMS를 공부하다가 궁금한게 하나 생겨서 여쭤봅니다.

Topic을 dynamically 생성한 후 사용하고 싶어서
TopicSession class의 createTopic method를 사용했습니다.

그런후에 이를 subscribe하는 class를 하나 만들어서
테스트해 보았는데 주워진 이름을 가진 topic이 생성되지
않은 걸로 나오는군요.

createTemporaryTopic method를 사용하지 않고
createTopic method만으로는 dynamically 생성하는게
불가능한가요?

현재 openjms를 사용중입니다.

atie의 이미지

OpenJMS를 단독으로 쓰는 경우인지 어느 WAS에 올려서 쓰는 것인지가 궁금합니다. 저는 OpenJMS는 써 본 적이 없어서 잠시 API를 본 것에 따르면 createTopic()에 JmsTopic을 넘겨주면 토픽이 없는 경우는 생성을 한다고 되었기에 혹시 다른 조건에 의해 토픽이 생성되는 것이 강제되지 않나 싶어 여쭈어 봅니다. Exception이 일어난 것이 있거나 테스트 코드를 작성한 것을 올려주시면 답변 하시는 분들께도 도움이 되리라 생각합니다.

그리고, 도움이 안되는 답변을 하나 덧붙이면, 관리상의 이유로 다이나믹하게 토픽을 생성하는 것은 보통은 하지를 않습니다. 실무에서는 backout 큐를 두고 원치 않는 (또는 준비가 안된) 메세지가 들어오는 경우는 예외로 처리를 하게 되죠. JMS 스펙에서도 이 부분은 명시가 없는 것으로 알고 있고 벤더 구현 사항으로 남겨두는데, 공부하시는 것 외에 특별한 다른 이유가 있는지요. ceateTemporaryTopic 을 언급하신 것으로 보아 이미 알고 있을 것으로 짐작은 하지만 무슨 이유일까도 궁금 합니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

strongspirit의 이미지

OpenJMS를 단독으로 사용하고 있습니다.

저도 API를 보긴 했는데 이해가 안가는 부분이 createTopic()을 이용해서 생성한 topic과 createTemporaryTopic()을 이용해서 생성한 topic과 무엇이 다른가 입니다. 그리고 createTopic()을 이용한후 connection까지 완료가 된 경우라면 connection을 끊기 전까지는 topic이 유지되어야 할 것 같은데 그렇지도 않구요.

전체적인 형식은 Publisher에서 createTopic()을 이용해서 topic 생성후 message를 보내면 Subscriber에서 message를 받는 것과 같은
일반적인 형식으로 구현했습니다. 그런데 Subscriber에서 topic을 찾으려고 하면 NameNotFoundException 오류가 나는 걸로 보아서 topic이 생성되지 않았다고 판단했습니다.

API에서 언급한 physical topic을 config를 살짝 고쳐서 여러개 만들어서 사용하는 방법이 더 좋을 것 같은데 굳이 createTopic()을 사용해서 하려는 이유는 openjms를 설치할때 default로 설치한 환경에서 프로그램을 실행했을때 정상적으로 수행되도록 요구(?)받았기 때문입니다;;

그리고 말씀하신 JMS 스펙에 명시되어 있지 않다는 것은 저도 구글에서 검색해서 보긴 했습니다. 그래서 더욱 physical topic 쪽으로 사용하고 싶은데 사정이 위와 같다보니;;

아직까지 어떻게 해야될지 고민중입니다;;

Slow and Steady wins the race..!!

atie의 이미지

session 과 topic을 만드는데 사용된 property 값들을 올려 주시겠습니까? createTemporaryTopic()은 동일 세션에서 생성이 된 Subscriber만이 그 토픽의 메세지를 가져올 수 있습니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

strongspirit의 이미지

http://www.nabble.com 에서 제가 전에 얻은 답변입니다.
atie 님께 정말 미안하네요. 신경 써주셨는데 제가 미쳐 신경을 못썼습니다.

---
You need to create the topics via the administration API.
See http://openjms.sourceforge.net/usersguide/admin.html#Creating_administered_destinations
for details.

---

제가 직접 이러한 방식으로 하지는 않았습니다만, openjms 홈페이지에
나와있는 예제이므로 되지 않을까(?) 생각합니다.

제가 가지고 있던 문제는 작업을 주신 분과 이야기를 잘 해서-_-
제일 간단한 방법인 openjms 설정파일을 약간 고쳐서 시작할때
물리적 topic을 그냥 생성하는 방식으로 해결했습니다.

Slow and Steady wins the race..!!

Slow and Steady wins the race..!!

익명 사용자의 이미지

jms 어렵네요.
openjms 설정파일을 약간 고쳐서 시작할 때
물리적 topic을 그냥 생성하는 방식으로 해결하는 건 어떨가요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.